这篇文章主要讲解了“如何实现ASP.NET MVC5网站开发我的咨询列表及添加咨询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现ASP.NET MVC5网站开发我的咨询列表及添加咨询”吧!
创新互联建站是一家专业提供屏边企业网站建设,专注与成都做网站、成都网站制作、HTML5建站、小程序制作等业务。10年已为屏边众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。一、菜单
打开添加的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" })@Html.RadioButtonFor(model => model.Consultation.IsPublic,true) 公开 @Html.RadioButtonFor(model => model.Consultation.IsPublic, false) 仅自己查看 @Html.ValidationMessageFor(model => model.Consultation.IsPublic)@Html.LabelFor(model => model.Consultation.Email, new { @class = "control-label col-sm-2" })@Html.TextBoxFor(model => model.Consultation.Email, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Consultation.Email)@Html.LabelFor(model => model.Consultation.Content, new { @class = "control-label col-sm-2" })@Html.TextAreaFor(model => model.Consultation.Content, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Consultation.Content)
与添加文章非常类似,下面写接受方法
再次在控制器中添加Add action
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Add(CommonModel commonModel) { if(ModelState.IsValid) { InterfaceUserService _userService = new UserService(); var _user = _userService.Find(User.Identity.Name); if (commonModel.Article != null) commonModel.Article = null; if (commonModel.Attachment != null) commonModel.Attachment = null; if (commonModel.DefaultPicUrl != null) commonModel.DefaultPicUrl = null; commonModel.Hits = 0; commonModel.Inputer = User.Identity.Name; commonModel.Model = "Consultation"; commonModel.ReleaseDate = System.DateTime.Now; commonModel.Status = 20; commonModel.Consultation.Name = _user.DisplayName; _user = null; _userService = null; commonModel = commonModelService.Add(commonModel); if (commonModel.ModelID > 0) return View("AddSucess", commonModel); } return View(commonModel); }
在action中如果验证通过,先查找用户,并将Article、Attachment设为null,这是防止用户偷偷夹带私货。然后初始化commonModel的Hits、Inputer等字段并保存。
效果:
我的咨询实现了查看我的咨询和进行咨询两个功能,查看使用了datagrid的详细视图。
感谢各位的阅读,以上就是“如何实现ASP.NET MVC5网站开发我的咨询列表及添加咨询”的内容了,经过本文的学习后,相信大家对如何实现ASP.NET MVC5网站开发我的咨询列表及添加咨询这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联网站建设公司,,小编将为大家推送更多相关知识点的文章,欢迎关注!