上次把咨询的架构搭好了,现在分两次来完成咨询:1、用户部分,2管理部分。这次实现用户部分,包含两个功能,查看我的咨询和进行咨询。
一、菜单
打开上次添加的咨询控制器控制器,添加菜单操作,返回分布视图
///摘要///菜单////summary///returns/returns public action result Menu(){ return partial view();}右键添视图
div class='测量-手风琴' div title='咨询管理ul id='导航菜单' class='导航-凹坑导航-堆叠'阿利href='javascript:void()'数据-选项='图标' : '图标-文件夹-页面','标题' : '咨询管理,' href ' : ' @ Url .动作('管理列表','咨询)“span class=”动作列表'咨询管理/span/a/li阿利我的咨询,' href ' : ' @ Url .动作(“MyList”,“consulting”)”span class=“glyphicon-list-alt”我的咨询/span/a/li /ul /div/div再打开主页/菜单视图
添加分布视图引用
运行一下,在留言器中看下/会员/主页。效果如。
二、我的咨询
我的咨询部分用数据网格显示自己的咨询列表,数据网格使用详细视图功能,点开折叠可以看到详细内容。
效果是这样,折叠时:
点开后
这是数据网格的扩展功能,先要去官网下载jquery-measuri-datagridview。拉链,然后把里面的jquery。苏西。数据网格。详细视图。射流研究…文件放到项目/脚本文件夹下。
打开咨询控制器控制器,添加MyJsonList方法,返回我的咨询的json列表
public JsonResult MyJsonList(int page index=1,int page size=20){ int _ total;var _list=commonModelService .查找页面列表(out _total,页面索引,页面大小,'咨询',字符串。空,0,用户。标识。名称,空,空,0)。ToList().选择(厘米=新的尼尼微网络。模特。commonmodelviewmodel(){ CategoryID=cm .CategoryID,CategoryName=cm .类别。名称,DefaultPicUrl=cm .默认图片,点击量=厘米.点击,输入=厘米。输入器,型号=厘米。模型,ModelID=cm .模型号,发布日期=厘米.发布日期,状态=厘米。状态,标题=厘米标题});返回Json(new { total=_total,rows=_list .to list()});}再次添加我的列表方法,直接返回视图
///摘要///我的咨询////summary///returns/returns public action result MyList(){ return View();}
右键为我的列表添加视图。
@{ ViewBag .Title='我的咨询;} div id=' toolbar ' div a href=' # ' id=' BTN _ add ' class=' measuri-link button ' data-options=' iconcl s 3360 ' icon-add ',plain:true '进行咨询/a a href=' # ' class=' measuri-link button ' data-options=' iconcl s 3360 ' icon-reload ',plain : true ' onclick=' $(' # consulting _ List ').datagrid(' reload ');'刷新/a/div/div表id=' consulting _ List '/表脚本src=' http : ~/Scripts/common。js '/script script src=' http : ~/Scripts/jquery。苏西。数据网格。详细视图。js '/script脚本类型=' text/JavaScript ' $(' # consulting _ List ').datagrid({ loadMsg: '加载中……”,fitColumns:true,pagination: true,singleSelect: true,url: ' @ Url .操作(“MyJsonList”,“Consultation”)”,列: [[ { field: 'ModelID ',title: 'ID' },{ field: 'Title ',title: '标题},{ field: 'Inputer ',title: '咨询人,align: 'right' },{ field: 'ReleaseDate ',title: '咨询日期,对齐: '右',格式器:函数(值、行、索引){返回jsonDateFormat(值);} },{ field: 'StatusString ',title: '状态,width: 100,align: 'right' } ],toolbar: '#toolbar ',idField: 'ModelID ',view: detailview,detailFormatter:函数(rowIndex,row data){ return ' div class=' detail ' style=' padd :5 px 0 '/div ';},onExpandRow:函数(索引,行){ var detail=$(this).datagrid('getRowDetail ',索引)。find(' div。细节’);detail.panel({ height: 160,border: false,cache: false,href: ' @ Url .内容(' ~/成员/咨询/索引')/'行型号标识,在线加载:函数(){ $(' #咨询_列表').datagrid('fixDetailRowHeight ',索引);} });$(' #咨询列表').datagrid('fixDetailRowHeight ',索引);} });//添加按钮$('#btn_add ').单击(function(){ window。父母。“addtab(”进行咨询,' @ Url .动作("添加"、"咨询")、"图标-页面");});/script这段代码比较长,解释一下:
div id=' toolbar ' div a href=' # ' id=' BTN _ add ' class=' measuri-link button ' data-options=' iconcl s 3360 ' icon-add ',plain:true '进行咨询/a a href=' # ' class=' measuri-link button ' data-options=' iconcl s 3360 ' icon-reload ',plain : true ' onclick=' $(' # consulting _ List ').datagrid(' reload ');'刷新/a/div/div表id=' consulting _ List '/表
这是数据网格的主题和工具栏。
引用~/脚本/Common.js是因为里面包含日期格式化方法,json传过来的日期必须格式化后才能正常显示。
引用~/Scripts/jquery。简单的用户界面。数据网格。详细视图。射流研究…是数据网格像是视图必须的
这个是初始化数据网格。其中一是使用Common.js中的jsondateformatter方法格式化日期。2、就是详细视图部分
view: detailview,detailFormatter:函数(rowIndex,row data){ return ' div class=' detail ' style=' padd :5 px 0 '/div ';}
这两句使用详细视图,并为详细视图添加一个差异
onExpandRow:函数(索引,行){ var detail=$(this).datagrid('getRowDetail ',索引)。find(' div。细节’);detail.panel({ height: 160,border: false,cache: false,href: ' @ Url .内容(' ~/成员/咨询/索引')/'行型号标识,在线加载:函数(){ $(' #咨询_列表').datagrid('fixDetailRowHeight ',索引);} });这段是在行展开时为详细视图的差异链接到~/会员/咨询/索引/id视图
下面来添加咨询/索引这个分布视图
在控制器中添加索引操作并返回分布视图
公共操作结果索引(int id){返回部分视图(commonModelService .查找(身份证).协商);}右键添加强类型(咨询)分布视图
@模型尼尼微模型。咨询表样式=' width :100% ' tr th @ Html .显示名称(型号=型号.名称)/th td@Html .显示(模型=模型.名称)/td th@Html .显示名称(型号=型号.IsPublic)/th td@Html .显示(模型=模型.IsPublic)/td /tr tr th@Html .显示名称(型号=型号.QQ)/th td@Html .显示(模型=模型.QQ)/td th@Html .显示名称(型号=型号.电子邮件)/th td@Html .显示(模型=模型.电子邮件)/td /tr tr th@Html .显示名称(型号=型号.Content)/th td colspan='3'@Html .显示(模型=模型.内容)/TD/tr TD colspan=' 4 ' @ if(Model .回复时间!=null) { span管理员于:@模型。回复时间回复如下/span p style=' margin-top :8 px ' @ Model .ReplyContent /p } /td /tr/table完工
三、进行咨询
在咨询控制器添加添加操作
///摘要///添加////summary////returns/returns public action result Add(){ interface user service _ user service=new user service();var _user=_userService .查找(用户。身份。姓名);common model _ CModel=new common model();_cModel .咨询=新咨询(){电子邮件=_用户。电子邮件,IsPublic=true,Name=_user .显示名称};_用户=空_用户服务=空返回视图(_ CModel);}在行为中先查询用户信息,构造一个CommonModel并传给视图
右键添加视图
@模型尼尼微模型。CommonModel @ { ViewBag .Title='进行咨询;} @使用(Html .begin inform()){ @ Html .防伪令牌(H4)进行咨询/H4 HR/div class=' form-horizontal ' @ Html .ValidationSummary(true)div class=' form-group ' label class=' control-label col-sm-2 '类型/label div class='col-sm-10 '输入id='CategoryID '名称='CategoryID '数据-选项=' url: ' @ Url .action(' jsonbobox ',' Category ',new { model=' Consultation ' })',valueField:'CategoryID ',textfield : ' Name ' ' class=' easyui-combobox ' style=' height : 34px;宽度: 280像素;/@Html .ValidationMessageFor(model=model .CategoryID)/div/div class=' form-group ' @ Html .标签(型号=型号.Title,new { @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .TextBoxFor(model=model .标题,新的{ @ class=' form-control ' })@ Html .ValidationMessageFor(model=model .title)/div/div class=' form-group ' @ Html .标签(型号=型号.咨询。名称,新的{ @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .TextBoxFor(model=model .咨询。名称,新的{ @class='form-control ',@readonly='readonly' }) @Html .ValidationMessageFor(model=model .咨询。名称)/div/div class='表单组@Html .标签(型号=型号.咨询。QQ,new { @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .TextBoxFor(model=model .咨询。QQ,新增{ @class='form-control' }) @Html .ValidationMessageFor(model=model .咨询。QQ)/div/div class=' form-group ' @ Html .标签(型号=型号.咨询。IsPublic,new { @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .收音机按钮(型号=型号1 .咨询。IsPublic,true)公开@Html .收音机按钮(型号=型号1 .咨询。IsPublic,false)仅自己查看@Html .ValidationMessageFor(model=model .咨询。ISpublic)/div/div class=' form-group ' @ Html .标签(型号=型号.咨询。电子邮件,新的{ @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .TextBoxFor(model=model .咨询。电子邮件,新的{ @class='form-control' }) @Html .ValidationMessageFor(model=model .咨询。email)/div/div class=' form-group ' @ Html .标签(型号=型号.咨询。内容,新的{ @ class=' control-label col-sm-2 ' })div class=' col-sm-10 ' @ Html .textarefor(model=model .咨询。内容,新的{ @class='form-control' }) @Html .ValidationMessageFor(model=model .咨询。内容)/div/div class=' form-group ' div class=' col-sm-offset-2 col-sm-10 '输入类型='提交'值='提交BTNBTN默认//div /div /div}与添加文章非常类似,下面写接受方法
再次在控制器中添加添加操作
[httpset][validateantforgerytoken]公共动作结果Add(公共模型公共模型){ if(模型状态.IsValid){ interface user service _ user service=new user service();var _user=_userService .查找(用户。身份。姓名);if (commonModel .文章!=null) commonModel .Article=nullif (commonModel .附件!=null) commonModel .附件=nullif (commonModel .DefaultPicUrl!=null) commonModel .DefaultPicUrl=nullcommonModel .命中数=0;commonModel .输入者=用户。身份。姓名;commonModel .模型='咨询;commonModel .发布日期=系统。日期时间。现在;commonModel .状态=20;commonModel .咨询。名称=_用户。显示名称;_用户=空_用户服务=空公共模型=公共模型服务.添加(通用模型);if (commonModel .ModelID 0)返回视图(' AddSucess ',通用模型);}返回视图(通用模型);}在行为中如果验证通过,先查找用户,并将文章、附件设为null,这是防止用户偷偷夹带私货。然后初始化commonModel的点击、输入等字段并保存。
效果:
我的咨询实现了查看我的咨询和进行咨询两个功能,查看使用了数据网格的详细视图。
以上就是我实现咨询列表和添加咨询的全过程,希望对大家的学习有所帮助。