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

asp.net-mvc – 为什么ASP.NET MVC 4与IList for editor不能正确

发布时间:2020-12-15 19:46:53 所属栏目:asp.Net 来源:网络整理
导读:我有一个奇怪的情况,在我的编辑器模板中引用’模型会产生格式错误的索引’名称’字段: 编辑 @model IListBillingRateItem@for (int i = 0;i this.Model.Count(); i++){ @Html.HiddenFor(m = this.Model[i].BillingRateItemID)} 产生的隐藏字段包括索引之前
我有一个奇怪的情况,在我的编辑器模板中引用’模型会产生格式错误的索引’名称’字段:

编辑

@model IList<BillingRateItem>

@for (int i = 0;i < this.Model.Count(); i++)
{
    @Html.HiddenFor(m => this.Model[i].BillingRateItemID)
}

产生的隐藏字段包括索引之前的一段时间,这是有问题的:

HTML已呈现

<input id="Model_BillingRateItems__0__BillingRateItemID" name="Model.BillingRateItems.[0].BillingRateItemID" type="hidden" value="9">

我想要的是什么

请注意,’Model.BillingRateItems [0]’在名称和索引之间没有句点.这很好!

<input id="Model_BillingRateItems__0__BillingRateItemID" name="Model.BillingRateItems[0].BillingRateItemID" type="hidden" value="9">

编辑 – 这是调用编辑器的视图的示例

@model BillingRateViewModel // has multiple BillingRateItems

@Html.EditorFor(m=>m.BillingRateItems,"BillingRateItemsGrid")

注意:
当我更改编辑器以接受父对象(例如BillingRate)时,索引工作正常.也许结论只是所有编辑都会以”开头.无论背景如何.在Enumerables的情况下,它将添加’.[].’即使这样做本机模型绑定器也没有帮助重建对象.

解决方法

我不确定你正在使用的MVC程序集的版本是什么问题,但看起来像是一些我无法在Visual Studio Extensions and Updates菜单中安装的最新版本上重现的错误.

您可以使用@ Html.Hidden以这种方式创建此隐藏字段:

@Html.Hidden("[" + i + "].BillingRateItemID",this.Model[i].BillingRateItemID);

生成的HTML看起来像,我将成为每个项目的索引,值将采用BillingRateItemID:

<input name="[1].BillingRateItemID" type="hidden" value="1">

然后默认的Model Binder将正确地处理列表.

(编辑:李大同)

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

    推荐文章
      热点阅读