Asp.net mvc 将模型属性传递给局部视图时,如何保持正确的模型绑定行为?

Asp.net mvc 将模型属性传递给局部视图时,如何保持正确的模型绑定行为?,asp.net-mvc,partial-views,model-binding,mvc-editor-templates,Asp.net Mvc,Partial Views,Model Binding,Mvc Editor Templates,在ASP.NET MVC中,我希望重用一组常用的信用卡字段,将它们放在部分视图中,并在父视图的另一个窗体中呈现该部分视图 问题是,如果CreditCard对象是模型的一部分,而该模型本身就是一个复杂对象,那么在提交表单时,当我将其传递到局部视图时,字段名称缺少父属性名称前缀,这将允许默认模型绑定器将字段映射到复杂对象的正确属性 部分视图中呈现的信用卡字段(行为不正确): @Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCa

在ASP.NET MVC中,我希望重用一组常用的信用卡字段,将它们放在部分视图中,并在父视图的另一个窗体中呈现该部分视图

问题是,如果CreditCard对象是模型的一部分,而该模型本身就是一个复杂对象,那么在提交表单时,当我将其传递到局部视图时,字段名称缺少父属性名称前缀,这将允许默认模型绑定器将字段映射到复杂对象的正确属性

部分视图中呈现的信用卡字段(行为不正确):

@Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCard ,
 new ViewDataDictionary());
@Html.TextBoxFor(x => x.CreditCard.IssueNumber, new {@maxlength = 3, @size = 3})
Posts字符串:

PayOption=1&CreditCardNumberPlainText=0000000000000&StartDateMm=03&StartDateYyyy=2008&ExpireyDateMM=03&ExpireyDateYYYY=2017&SecurityCode=111&IssueNumber=1&X-Requested-With=XMLHttpRequest

标准表单(正确行为),其中信用卡字段在主视图中呈现,字段如下:

@Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCard ,
 new ViewDataDictionary());
@Html.TextBoxFor(x => x.CreditCard.IssueNumber, new {@maxlength = 3, @size = 3})
Post字符串:


PayOption=1&CreditCardInfo.CreditCardNumberPlainText=0000000000000000&CreditCardInfo.StartDateMm=02&CreditCardInfo.StartDateYY=2009&CreditCardInfo.ExpireyDateMM=04&CreditCardInfo.ExpireyDateYYYY=2014&CreditCardInfo.SecurityCode=111&CreditCardInfo.IssueNumber=1&X-Requested-With=XMLHttpRequest

为什么不对此进行编辑模板CreditCard类,然后在父视图中使用它

例如

EditorTemplate:
CreditCard.cshtml
位于
EditorTemplates
文件夹中的
Shared
文件夹中 在此文件中添加信用卡的编辑字段。大概是这样的:

@Html.EditorFor(x => x.IssueNumber)
//........... So on.
那么,在你看来,只要打电话:

@Html.EditorFor(x => x.CreditCard)

谢谢,我喜欢一个简单的答案。以前见过EditorFor helper,但还没有完全掌握用例。在这里找到了一个很好的指南:希望我了解如何创建不同的表单名属性,以便绑定在服务器上工作。。。