asp.net-mvc-3 – 具有DropDownList的可重用编辑器模板,用于业务
我正在使用带有Razor视图的MVC3,并希望为我的几个类构建可重用的DropDownLists,但经过大量搜索后,我还没有找到一个能够完全满足我需要它的例子……
对于这个例子,我有两个这样的类: – public class Person { public int ID { get; set; } public string Name { get; set; } public Group Group { get; set; } } public class Group { public int ID { get; set; } public string Name { get; set; } } 我有一个工作的Controller / View for Person.该视图有一个DropDownListFor控件: @model Person ... @Html.DropDownListFor(o => o.Group.ID,(ViewData["groups"] as SelectList)) 视图直接使用Person类,而不是中间模型,因为我没有找到令人信服的理由在此阶段从另一个中抽象出一个. 以上工作正常…在控制器中我从视图返回的Person中获取Group.ID中的值,查找它,并将Person.Group设置为结果.工作,但不理想. 我在这里找到了一个活页夹:MVC DropDownList values posted to model aren’t bound将为我解决这个问题,但我还没有那个工作……因为只有我可以重用它才真正有用. 我想做的是在模板中有这样的东西: – @model Group @Html.DropDownListFor(o => o.Group.ID,(ViewData["groups"] as SelectList)) 并在这样的视图中使用它: – @Html.EditorFor(o => o.Group) 但是上面似乎不起作用……上面的EditorFor行插入了整个类的编辑器(例如,也是Group.Description的文本框)…而不是插入我的组列出的DropDownList 我在Views / Shared / EditorTemplates下的一个名为Group.cshtml的文件中有上述模板 如果这样做,那么每当类具有Group类型的属性时,默认情况下将使用此DropDownList编辑器(或者至少如果由某个属性指定) 提前感谢您提供的任何建议…… 解决方法
您可以创建下拉列表用户控件来处理此问题.在Shared文件夹下,创建一个名为EditorTemplates的文件夹,并将用户控件放在那里.按照惯例,MVC在Shared / EditorTemplates中查找任何编辑器模板.您可以覆盖查找编辑器模板的位置,但我不会在此处进行操作.
一旦创建了用户控件,就需要使用“UIHint”属性修饰相应的属性,以告诉引擎它应该为该属性使用哪个编辑器. 以下是一个示例实现. 在Shared / EditorTemplates文件夹中,您的用户控件(在本例中为_GroupsDropDown.cshtml)如下所示: @model Group @Html.DropDownListFor(o => o.ID,(ViewData["groups"] as SelectList)) 修改Person中的Group属性以添加UIHint属性,如下所示: **[UIHint("_GroupsDropDown")]** public Group Group { get; set; } 在您的控制器中,您需要 ViewData["groups"] = new SelectList(<YourGroupList>,"ID","Name"); 获得上述代码后,您可以按照自己的意愿使用EditorFor语法. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Windows身份验证会话超时
- Asp.Net MVC UNITOfWork和MySQL和睡眠连接
- asp.net-mvc – Java是否与ASP.NET MVC的示例站点等效 – 特
- asp.net-mvc-5 – “确认密码”和“密码”不匹配. MVC5
- ASP.NET CAPTCHA实现
- 问题在ASP.NET中使用System.Web.Caching.Cache类
- asp.net – 对绑定到自定义通用对象列表的GridView进行排序
- asp.net-mvc-3 – ASP.NET MVC 3 – 验证问题
- .net – 多选列表框中的预选项目(MVC3 Razor)
- asp.net – 剃刀视图引擎自动应用报价?
- 没有密码的Asp.net Memebership授权
- asp.net-mvc-5 – MVC AttributeRoute似乎忽略了
- ASP.net:单例类,每个请求只实例化一次?
- 个人ASP.NET开源
- asp.net-mvc – 所有ASP.NET Web API控制器返回4
- asp.net-web-api – 标题中的API密钥与swashbuck
- asp.net-core – Microsoft.AspNetCore.NodeServ
- asp.net-mvc – 只读一个下拉列表,但仍然提交其值
- asp.net-mvc – 在导航时维护url参数
- asp.net – 51degrees.mobi的替代方案?