gpt4 book ai didi

asp.net-mvc - 将模型属性传递给局部 View 时如何保持正确的模型绑定(bind)行为?

转载 作者:行者123 更新时间:2023-12-01 01:18:07 27 4
gpt4 key购买 nike

在 ASP.NET MVC 中,我想重用一组常用的信用卡字段,方法是将它们放在部分 View 中,然后在父 View 的另一个表单中呈现该部分 View 。

问题是,如果 CreditCard 对象是模型的一部分,它本身就是一个复杂的对象,当我将它传递给部分 View 时,在表单提交时,字段名称缺少父属性名称前缀,这将允许默认模型绑定(bind)器将字段映射到复杂对象的正确属性。

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

@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.

最佳答案

为什么不为这个 CreditCard 类创建一个 EditorTemplate,然后在你的父 View 中使用它

例如。

编辑器模板:CreditCard.cshtmlEditorTemplates Shared 中的文件夹文件夹
在此文件中添加 CreditCard 的编辑字段。像这样的东西:

@Html.EditorFor(x => x.IssueNumber)
//........... So on.

那么在您看来,只需调用:
@Html.EditorFor(x => x.CreditCard)

关于asp.net-mvc - 将模型属性传递给局部 View 时如何保持正确的模型绑定(bind)行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com