asp.net-mvc – asp.net mvc强类型助手 – 你的渲染绑定对象应该与你的发布对象相同吗?
|
我看到asp.net mvc 2有强烈的输入帮助,并且最初看它的工作方式我认为也许我在asp.net mvc 1中做错了数据绑定以渲染视图并回发到控制器. 我经常有不同的对象来渲染视图并回发到控制器.这是错的?这似乎很自然,因为在渲染视图时,您经常会有一个包含下拉列表等的视图模型,但对于您的发布,您只需要回发所需的属性. 例如,在渲染的方式上,我的viewmodel可能看起来像这样 public class PersonViewModel
{
public int Age;
public string FIrst;
public JobCategory[] JobCategories;
public Sport[] Sports;
public int NumberOfChildren;
}
在这种情况下,jobCategories和Sports将用于填充下拉框. NumberOfchildren将只是html放入,我不希望它可编辑.当我想发布我只想传回一个苗条的对象只有发布的属性,所以我有另一个对象 public class PersonUpdater
{
public int Age;
public string FIrst;
public int JobCategoryId;
}
这些是我需要传回的唯一属性,所以我的控制器将如下所示: public ActionResult Update(PersonUpdater personUpdater)
{
_repository.UpdateModel(personUpdater).
}
所以,鉴于上述情况,假设强类型辅助方法(如下所示)似乎对方法有用,但如果您引用不同的属性,则可能会导致回发到服务器的问题. http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx 有什么想法吗? 解决方法真正的问题是 – 当前接受的方法忽略了视图模型的 SRP – 编辑形式同时充当输入和输出.人们还没有接受将视图模型划分为,正如我所说的,输入视图模型和输出视图模型(对于许多人来说 – 甚至创建视图模型层太多).因此 – Mvc2目前缺乏对此的支持(你不应该同时具有非输入和输出的强类型视图)主要是因为模糊和缺乏广泛接受的方法. 但我确实认为,在更深入地将视图模型分离为其中两个时,有一个好处(好吧……实际上是一种权衡).如果这个想法能够发展并最终被广泛接受,我也不会感到惊讶. 实际上 – 当前的方法甚至有一个名字 – Thunderdome principle.如果像杰里米·D·米勒这样的人说这是正确的,社区不会打扰,也不会搜索任何其他内容. 从实际角度来看 – 您可以通过提供正确的元数据来缓解一些问题(您可能需要查看fluent model metadata provider). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IIS 7.5中的Windows身份验证因信任关系异常而失
- asp.net-mvc – 未在ELMAH中记录的错误
- asp.net – 问题映射HttpHandler – HTTP错误404未找到
- 在ASP.NET中的OpenID认证?
- asp.net – 在button和asp之间的区别:button onclick
- asp.net是否可以防止SQL注入攻击
- asp.net-web-api – 在运行时禁用ApiController
- 我如何在ASP.Net Web窗体中模拟/伪造会话对象?
- ASP.NET Webforms的MVVM模式?
- asp.net-mvc-3 – 选择更改事件 – Html.DropDownListFor
- asp.net-mvc – 在asp.net mvc请求中捕获windows
- asp.net – .net 4.6框架是在位升级,那么.net fr
- asp.net-mvc-3 – 列中的MVC3 WebGrid自定义文本
- 从ASP.NET MVC应用程序中的Amazon SES发送电子邮
- asp.net – ApplicationInsight导致网站在启动时
- asp.net – NuGet:’X’已经有一个依赖定义为’
- asp.net-mvc – 在MVC4中为ViewModel设置默认值的
- asp.net-mvc – MVC – 重定向在构造函数内
- asp.net-mvc – 此模板试图加载组件程序集Micros
- ASP.NET Web应用程序(MVC)部署自动化和Subversio
