加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在将model属性传递给局部视图时保持正确的模

发布时间:2020-12-16 10:02:21 所属栏目:asp.Net 来源:网络整理
导读:在ASP.NET MVC中,我希望重用一组常用的信用卡字段,方法是将它们放在局部视图中,然后在父视图中将该局部视图渲染到另一个窗体中. 问题是如果CreditCard对象是模型的一部分,它本身就是一个复杂的对象,当我将其传递给部分视图时,在表单提交时,字段名称缺少允许
在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-请求-随着= 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.SecurityCode = 111&安培; CreditCardInfo.IssueNumber = 1和X-请求─随着=的XMLHttpRequest

解决方法

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

例如.

EditorTemplate:Shared文件夹中的EditorTemplates文件夹中的CreditCard.cshtml
在此文件中添加CreditCard的编辑字段.像这样的东西:

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

然后在你的视图中调用:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读