最近要做一个项目,说是实习结束前的最后一个项目,曰:在线OA。
负责网络硬盘方面的代码,所以顺便梳理一下在MVC3框架下的一些知识。这些我所遇到的问题依次解决之后,网络硬盘也就搞定了。
项目框架:MVC3
项目模板:网络硬盘
涉及表:R_User中的ID,UserName,I_NetDisk的UserID,其中UserID是ID的外键。
问题一:遇到需要权限用户修改自己上传文件的文件名时,其中需要显示文件上传者,这里设置显示框是dropdownlist,要求只能下拉,但是部分item没法选中。
在WF上可以很轻易实现,两种:
1.设置readonly为true,居然还可以下拉;
2.想到只要在View层设置disabled为true即可,于是用JQuery但是Controller中却无法获得被设置的dropdownlist的value值,很蛋疼的事。很明显,View层是前台代码根据droplist来寻找到值的,若是设置了disabled,据我推测,这样导致前台找不到dropdownlist,也就获取不到值。
怎么办?
我在上面加个隐藏文本域绑定
1 @Html.HiddenFor(model => model.UserID) 2 @Html.DropDownList("UserID")
但是这样虽然获取到了值,disabled却失去了作用,dropdownlist照样能够下拉。
实在没办法
我只能用UserID代替UserName显示上传人编号了,
@Html.DropDownList("UserID")//显示的是所有的UserName信息
改为
@Html.Label("UserID")
但是这个就显得效果不好,因为当用户修改“文件名”,看到的编辑页码信息却是“上传者ID”,可不可以,有更好的方法呢?
效果图:
代码:
1 @model inOffice.Models.I_NetDisk 2 3 @{ 4 ViewBag.Title = "Edit"; 5 } 6 7 <h2>编辑</h2> 8 9 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 10 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 11 <script src="http://www.cnblogs.com/Scripts/jquery-1.5.1.js" type="text/javascript"></script> 12 <script type="text/javascript"> 13 $(document).ready(function () { 14 $("#UserID").attr("readonly", true); 15 $("#Type").attr("readonly", true); 16 $("#UserID").attr("enable", false); 17 $("#Pid").attr("readonly", true); 18 $("#FilePath").attr("readonly", true); 19 $("#FileType").attr("readonly", true); 20 }); 21 </script> 22 @using (Html.BeginForm()) 23 { 24 @Html.ValidationSummary(true) 25 <fieldset> 26 <legend>网络硬盘</legend> 27 28 @Html.HiddenFor(model => model.ID) 29 30 <div class="editor-label"> 31 拥有者ID 32 @* @Html.LabelFor(model => model.UserID, "R_User")*@ 33 </div> 34 <div class="editor-field"> 35 @* @Html.Label("UserID")*@ 36 @* @Html.HiddenFor(model => model.UserID)*@ 37 @* @Html.DropDownList("UserID")*@ 38 39 @Html.EditorFor(model => model.UserID) 40 @* @Html.EditorFor(model => model.R_User.UserName)*@ 41 @* @Html.Label(Request.Cookies["UserName"].Value)*@ 42 @Html.ValidationMessageFor(model => model.UserID) 43 </div> 44 45 <div class="editor-label"> 46 类型 47 @* @Html.LabelFor(model => model.Type)*@ 48 </div> 49 <div class="editor-field"> 50 @Html.EditorFor(model => model.Type) 51 @Html.ValidationMessageFor(model => model.Type) 52 </div> 53 54 <div class="editor-label"> 55 @Html.LabelFor(model => model.Pid) 56 </div> 57 <div class="editor-field"> 58 @Html.EditorFor(model => model.Pid) 59 @Html.ValidationMessageFor(model => model.Pid) 60 </div> 61 62 <div class="editor-label"> 63 文件名 64 @* @Html.LabelFor(model => model.Name)*@ 65 </div> 66 <div class="editor-field"> 67 @Html.EditorFor(model => model.Name) 68 @Html.ValidationMessageFor(model => model.Name) 69 </div> 70 71 <div class="editor-label"> 72 @Html.LabelFor(model => model.FilePath) 73 </div> 74 <div class="editor-field"> 75 @Html.EditorFor(model => model.FilePath) 76 @Html.ValidationMessageFor(model => model.FilePath) 77 </div> 78 79 <div class="editor-label"> 80 @Html.LabelFor(model => model.FileType) 81 </div> 82 <div class="editor-field"> 83 @Html.EditorFor(model => model.FileType) 84 @Html.ValidationMessageFor(model => model.FileType) 85 </div> 86 87 <p> 88 <input type="submit" value="保存" /> 89 </p> 90 </fieldset> 91 } 92 93 <div> 94 @Html.ActionLink("返回文件列表", "Index") 95 </div>