在 ASP.NET MVC 中,我想重用一组常用的信用卡字段,方法是将它们放在部分视图中,然后在父视图的另一个表单中呈现该部分视图。
问题是,如果 CreditCard 对象是模型的一部分,它本身就是一个复杂的对象,当我将它传递给部分视图时,在表单提交时,字段名称缺少父属性名称前缀,这将允许默认模型绑定器将字段映射到复杂对象的正确属性。
以部分视图呈现的信用卡字段(不正确的行为):
@Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCard ,
new ViewDataDictionary());
帖子字符串:
PayOption=1&CreditCardNumberPlainText=0000000000000&StartDateMm=03&StartDateYyyy=2008&ExpiryDateMm=03&ExpiryDateYyyy=2017&SecurityCode=111&IssueNumber=1&X-Requested-With=XMLHttpRequest
标准表单(正确行为),其中信用卡字段在主视图中呈现,其中包含以下字段:
@Html.TextBoxFor(x => x.CreditCard.IssueNumber, new {@maxlength = 3, @size = 3})
帖子字符串:
PayOption=1&CreditCardInfo.CreditCardNumberPlainText=0000000000000000&CreditCardInfo.StartDateMm=02&CreditCardInfo.StartDateYyyy=2009&CreditCardInfo.ExpiryDateMm=04&CreditCardInfo.ExpiryDateYyyy=2014&CreditCardInfo.IssHttpNumber.Request=111&XCreditCardInfo.