繁体   English   中英

带有强类型HTML帮助程序的POST上的MV MVC2模型绑定问题

[英]ASP MVC2 model binding issue on POST with strongly-typed HTML helpers

所以我正在考虑从MVC 1.0转向MVC 2.0 RTM 我想开始遵循的一个约定是使用强类型HTML帮助程序来生成像文本框这样的控件。

但是,看起来它不会是一个简单的跳跃。 我尝试迁移我的第一个表单,替换这样的行:

<%= Html.TextBox("FirstName", Model.Data.FirstName, new {maxlength = 30}) %>

...对于这样的行:

<%= Html.TextBoxFor(x => x.Data.FirstName, new {maxlength = 30}) %>

以前,这将使用以下方法签名映射到POST上的相应视图模型:

[HttpPost]
public ActionResult Registration(AccountViewInfo viewInfo)

相反,它当前返回一个空对象。 我相信断开连接是因为我们将视图模型传递给一个更大的聚合对象,该对象具有一些页面元数据和其他有趣的东西(因此x.Data.FirstName而不是x.FirstName)

所以我的问题是:使用强类型帮助器的最佳方法是什么,同时仍允许MVC框架将表单集合适当地转换为我的视图模型,就像在原始行中一样? 有没有办法在不更改我们传递给视图的聚合类型的情况下执行此操作?

谢谢!

更新:所以绑定属性运行良好,但我不喜欢我必须将它应用于基本上每个发布的视图模型。 我最终改变了继承层次结构,使得我们的所有视图模型都从包含页面内容和其他元数据的基类继承,而不是名为Data的聚合属性。

public ActionResult Registration([Bind(Prefix = "data")] AccountViewInfo viewInfo);

这告诉绑定器它应该期望所有值都以数据开头,因此它将查找data.FirstName等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM