asp.net-mvc – 避免在业务层(MVC 3)中使用SelectList
我正在研究一个相当大的MVC 3应用程序,我遇到了一个对我来说闻不通的问题.这个问题需要一些设置才能理解,所以这里有我正在操作的前提:
>视图应该是强类型的(应避免使用ViewBag / ViewData) >模型中的属性,用于存储下拉列表的选定值 >视图本身始终使用@ Html.DropDownListFor()辅助方法 这就是麻烦的来源.共享编辑器模板的模型类型设置为模型类.这意味着构成编辑器模板的局部视图无权访问包含下拉项列表的包含视图模型对象. 我能够通过将SelectList属性直接添加到业务层中的模型类而不是将其保留在视图模型中来“解决”这个问题.但是SelectList类特定于MVC,这反过来意味着我的业务层依赖于MVC.这对我来说似乎不对,因为BL应该与UI无关. 还有其他人遇到过这个问题吗?我该怎么解决这个问题?我的一个前提也可能是错的. 解决方法
在这一点上,一切看起来都非常好,设计也很好(这并不奇怪,因为这一点让你感到头痛:-)):
它的视图模型应该有编辑器模板,而不是EF模型.由于视图模型特定于视图的要求,因此您可以自由地将所需的任何信息放入其中,例如SelectList.因此,不要简单地定义将EF模型作为属性(不是视图模型)的根视图模型.定义旨在满足特定视图要求的视图模型.不要在视图模型层次结构中放置单个EF类,您将看到您的生活将变得多么简单:-) 如果视图模型中有重复的属性,请不要担心.这就是那些课程的设计目标.此外,AutoMapper可以大大简化模型和视图模型之间的映射. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 动态加载不同控件时无法加载viewstate
- asp.net-mvc – 使用AppFabric缓存在MVC SessionState中使用
- asp.net-web-api – WebApi 2.1 PUT抛出错误415
- asp.net-mvc – 不同语言的MVC数据注释?
- 为什么asp.net在登录之前会执行302?
- ASP.NET:如何从javascript访问转发器生成的元素?
- asp.net – 如何将JsonResult对象作为字符串获取,以便我可以
- asp.net – Moq Parent没有默认构造函数.必须显式定义默认构
- asp.net – 带有nginx或apache的Mono 2.11
- ASP.NET – 在全局资源文件中存储SQL查询?
- 在ASP.NET中检测来自移动浏览器的请求
- asp.net – log4net没有记录ThreadContext
- asp.net-mvc – 为什么font-awesome在localhost而
- asp.net-mvc – MVC4单页应用程序 – 多个屏幕
- 使用ASP.Net MVC3中的jQuery动态填充下拉列表
- asp.net-web-api – GlobalConfiguration – 尝试
- asp.net – 错误:必须声明标量变量“@data”
- ASP.NET成员资格框架有多安全?
- asp.net – 适用于Linq To SQL DAL的静态方法吗?
- asp.net-mvc-5 – 当EnableOptimizations为true时