gpt4 book ai didi

asp.net-mvc - 为什么带有 IList for editor 的 ASP.NET MVC 4 不能正确编写索引符号?

转载 作者:行者123 更新时间:2023-12-03 02:29:00 25 4
gpt4 key购买 nike

我遇到了一种特殊情况,在编辑器模板中引用“model”会产生格式错误的索引“name”字段:

编辑

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

编辑 - 这是调用编辑器的 View 示例

@model BillingRateViewModel // has multiple BillingRateItems

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

注意:当我更改编辑器以接受父对象(例如 BillingRate)时,索引工作正常。也许结论只是所有编辑器都以“.”开头。无论上下文如何。对于枚举,它将添加“.[].”即使这对 native 模型绑定(bind)器没有帮助重建对象。

最佳答案

我不确切知道您正在使用的 MVC 程序集版本存在问题,但看起来像是一些我无法在您可以从 Visual Studio 扩展安装的最新版本上重现的错误,并且更新菜单。

您可以使用@Html.Hidden这样创建这个隐藏字段:

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

生成的 HTML 看起来像这样,其中 i 将是每个项目的索引,该值将采用 BillingRateItemID:

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

然后默认的 Model Binder 将正确处理该列表。

关于asp.net-mvc - 为什么带有 IList for editor 的 ASP.NET MVC 4 不能正确编写索引符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725087/

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