ASP.NET MVC中特定于视图的模型?
|
我对MVC比较新,所以这可能是一个新手问题. 我试图了解如何在一些看似不直接的情景中保持明确的关注点分离的最佳实践. 我现在正在看两种情况.想象一个非常基本的应用程序,让用户可以查看和编辑律师的在线个人资料.有一个动作/视图可显示特定用户的个人资料,还有一个动作/视图可用于编辑特定用户的个人资料.很容易想象一个漂亮而干净的Model类来表示用户配置文件的详细信息,可能是使用Entity Framework进行的,并映射到用户配置文件SQL表. 在用于显示用户配置文件的视图操作/视图中,在功能上,我需要一个允许用户编辑配置文件的按钮或链接.但这应该只对某些用户子集可用.例如,用户可以编辑自己的个人资料.此外,超级用户可以编辑任何人的个人资料.我的问题是View在呈现特定配置文件时应该如何确定链接是否存在.我认为View包含逻辑以确定当前用户是否可以编辑当前配置文件是错误的.我应该将IsEditable属性添加到UserProfile模型类吗?这并不悲惨,但也感觉不完全正确.我应该创建一个新的Model类来聚合UserProfile以及有关安全性的其他信息吗? 另一种情况……编辑特定的个人资料时,其中一个可编辑的内容是特定律师的专业列表.可能的专业清单并不固定.如果视图想要在组合框中呈现它们,则它需要从数据库中列出所有可能的特性.视图不应该直接从数据库中获取它们,所以我是否再次进行聚合模型事物并为View提供UserProfile和有效专业列表? 我想我想弄清楚的一般问题是我应该适应创建大量特定于各个视图的小型Model类.每个类都包含该特定视图所需的较大域模型的各个不相关部分. 解决方法对于您的场景,我传递了ViewData中的另一个参数ViewData [“AllowEdit”],如果View应该显示编辑链接,则该参数设置为true.我更喜欢将模型克隆到特定于视图的模型中以添加此单个属性.我有时会创建视图特定的模型 – 例如我有Grid ViewUserControl,它采用Grid模型,我可以从其他模型类的任何列表中生成 – 但在这种情况下我不会.在我看来,我会做这样的事情: <% if (Convert.ToBoolean(ViewData["AllowEdit"])) { %>
<%= Html.ActionLink("Edit","Edit","Profile",new { id = ViewData.Model.ID },null ) %>
<% } %> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET动态创建控件和回发
- asp.net – 如何使一个TextBox控件是多行不可调整大小?
- asp.net http服务器推送到客户端
- asp.net – 如何使我的硒测试不那么脆弱?
- ef-code-first – ASP.NET Identity – 将用户ID主键默认类
- asp.net-mvc – 将IQueryable泛型转换为JSON
- asp.net – RegisterForEventValidation只能在渲染过程中调
- asp.net-mvc – ASP.NET MVC路由Maproute参数
- 如何添加自定义属性到ASP.NET控件
- asp.net – 在设置了控件的选定值后运行Javascript
- asp.net – 在双列表框中移动项目
- asp.net-mvc – 为什么我得到一个“无法更新Enti
- 在ASP.NET Core 2.0 / Angular模板应用程序上发布
- asp.net-mvc – ASP.NET MVC中的动态(运行时生成
- asp.net – 如何使用在web.config文件
- asp.net – 每5秒自动刷新一次Updatepanel
- asp.net-mvc – 在Controller或其他地方渲染部分
- asp.net – 是否可以使用Membership API更改用户
- asp.net-core – 什么是aspnet50和aspnetcore50?
- asp.net-mvc – 401在MVC API中使用Microsoft Az
