为控件id添加前缀,并且仍然使其绑定MVC Razor

本文关键字:绑定 Razor MVC id 控件 添加 加前缀 | 更新日期: 2023-09-27 18:21:59

我有一个案例,其中有一个显示订单的页面和显示订单详细信息的选项卡。订单细节非常复杂,因为它们是相同的布局,我想使用部分视图或编辑器模板来生成表单。

问题是,结果是生成了多个重复的表单输入id(每个订单详细信息一个)

foreach (var orderDetail in Model.OrderDetils)
{
    @Html.EditorFor(model => orderDetail, "WorkOrder", orderDetail)
}

我已经读了很多关于这方面的文章,并看到了建议使用编辑器模板的解决方案,但该解决方案只有在您有相同的表单要呈现,但传递不同的模型属性时才有效,因此控件id的前缀会不同。。。就像这个解决方案。

在我的情况下,这不起作用,因为我传递的模型属性总是相同的。

那么,我还能如何在部分模板或编辑器模板中创建唯一的Id,该模板也将绑定。

我知道而不是:

@Html.EditorFor(model => model.WOHdr.Attribute1)

我可以做:

@Html.TextBoxFor(model => model.WOHdr.Attribute1, new { id = Model.Id + "_Attribute1" })

但当它传递到控制器时,它不会绑定。

想法?

为控件id添加前缀,并且仍然使其绑定MVC Razor

试试这个

@Html.TextBoxFor(model => model.WOHdr.Attribute1, new { @id = @Model.Id + "_Attribute1" })

使用"@"+动态值。现在您将获得唯一Id的

在编辑器中,您可以像这样使用

@Html.EditorFor(model => model.WOHdr.Attribute1, null, "id=" + @Model.Id + "" )

id将像这样生成

id="id_1", id="id_2" and so on..

<input id="Checkbox1_@(test.TestId)" type="checkbox" />

我希望上面的代码能帮助你