您现在的位置是:网站首页> 编程资料编程资料

ASP.NET MVC5网站开发我的咨询列表及添加咨询(十二)_实用技巧_

2023-05-24 288人已围观

简介 ASP.NET MVC5网站开发我的咨询列表及添加咨询(十二)_实用技巧_

上次把咨询的架构搭好了,现在分两次来完成咨询:1、用户部分,2管理部分。这次实现用户部分,包含两个功能,查看我的咨询和进行咨询。

一、菜单

打开上次添加的ConsultationController控制器,添加Menu action,返回分布视图

///  /// 菜单 ///  ///  public ActionResult Menu() { return PartialView(); } 

右键添视图

再打开Home/menu视图

添加分布视图引用

运行一下,在留言器中看下/Member/Home。效果如。

 二、我的咨询

我的咨询部分用datagrid显示自己的咨询列表,datagrid使用详细视图功能,点开折叠可以看到详细内容。

效果是这样,折叠时:

点开后

这是datagrid的扩展功能,先要去官网下载jquery-easyui-datagridview.zip,然后把里面的jquery.easyui.datagrid.detailview.js文件放到项目/Scripts文件夹下。

 打开ConsultationController控制器,添加MyJsonList方法,返回我的咨询的json列表

public JsonResult MyJsonList(int pageIndex = 1, int pageSize = 20) { int _total; var _list = commonModelService.FindPageList(out _total, pageIndex, pageSize, "Consultation", string.Empty, 0, User.Identity.Name, null, null, 0).ToList().Select( cm => new Ninesky.Web.Models.CommonModelViewModel() { CategoryID = cm.CategoryID, CategoryName = cm.Category.Name, DefaultPicUrl = cm.DefaultPicUrl, Hits = cm.Hits, Inputer = cm.Inputer, Model = cm.Model, ModelID = cm.ModelID, ReleaseDate = cm.ReleaseDate, Status = cm.Status, Title = cm.Title }); return Json(new { total = _total, rows = _list.ToList() }); } 

再次添加MyList方法,直接返回视图

///  /// 我的咨询 ///  ///  public ActionResult MyList() { return View(); }

右键为MyList添加视图。

@{ ViewBag.Title = "我的咨询"; } 

这段代码比较长,解释一下:

这是datagrid的主题和工具栏。

引用~/Scripts/Common.js 是因为里面包含日期格式化方法,json传过来的日期必须格式化后才能正常显示。

引用~/Scripts/jquery.easyui.datagrid.detailview.js 是datagrid像是视图必须的。

这个是初始化datagrid。其中1是使用Common.js中的jsonDateFormater方法格式化日期。2、就是详细视图部分

view: detailview,         detailFormatter: function (rowIndex, rowData) { return '
'; }

这两句使用详细视图,并为详细视图添加一个

 onExpandRow: function (index, row) { var detail = $(this).datagrid('getRowDetail', index).find('div.detail'); detail.panel({ height: 160, border: false, cache: false, href: '@Url.Content("~/Member/Consultation/Index")/' + row.ModelID, onLoad: function () { $('#Consultation_List').datagrid('fixDetailRowHeight', index); } }); 

这段是在行展开时为详细视图的div链接到~/Member/Consultation/Index/id视图

下面来添加Consultation/Index这个分布视图

在控制器中添加Index action 并返回分布视图

public ActionResult Index(int id) { return PartialView(commonModelService.Find(id).Consultation); }

右键添加强类型(Consultation)分布视图

@model Ninesky.Models.Consultation 
@Html.DisplayNameFor(model => model.Name)@Html.DisplayFor(model => model.Name)@Html.DisplayNameFor(model => model.IsPublic)@Html.DisplayFor(model => model.IsPublic)
@Html.DisplayNameFor(model => model.QQ)@Html.DisplayFor(model => model.QQ)@Html.DisplayNameFor(model => model.Email)@Html.DisplayFor(model => model.Email)
@Html.DisplayNameFor(model => model.Content)@Html.DisplayFor(model => model.Content)
@if (Model.ReplyTime != null) { 管理员于:@Model.ReplyTime 回复如下

@Model.ReplyContent

}

完工

三、进行咨询

在Consultation控制器添加 Add  action

///  /// 添加 ///  ///  public ActionResult Add() { InterfaceUserService _userService = new UserService(); var _user = _userService.Find(User.Identity.Name); CommonModel _cModel = new CommonModel(); _cModel.Consultation = new Consultation() { Email = _user.Email, IsPublic = true, Name = _user.DisplayName }; _user = null; _userService = null; return View(_cModel); }

在action中先查询用户信息,构造一个CommonModel并传给视图

右键添加视图

@model Ninesky.Models.CommonModel @{ ViewBag.Title = "进行咨询"; } @using (Html.BeginForm()) { @Html.AntiForgeryToken() 

进行咨询


@Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.CategoryID)
@Html.LabelFor(model => model.Title, new { @class = "control-label col-sm-2" })
@Html.TextBoxFor(model => model.Title, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Title)
@Html.LabelFor(model => model.Consultation.Name, new { @class = "control-label col-sm-2" })
@Html.TextBoxFor(model => model.Consultation.Name, new { @class = "form-control", @readonly = "readonly" }) @Html.ValidationMessageFor(model => model.Consultation.Name)
@Html.LabelFor(model => model.Consultation.QQ, new { @class = "control-label col-sm-2" })
@Html.TextBoxFor(model => model.Consultation.QQ, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Consultation.QQ)
@Html.LabelFor(model => model.Consultation.IsPublic, new { @class = "control-label col-sm-2" })
提示: 本文由整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!

-六神源码网