微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为控件id添加前缀,并且仍然绑定MVC Razor

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

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

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

我已经阅读了很多关于这个并且看到建议使用editortemplate的解决方案,但是该解决方案仅在您具有相同的表单进行渲染时才有效,但是将其传递给不同的模型属性以使控件ID的前缀不同…即. like this solution.

在我的情况下,这将无法工作,因为我传递的模型属性始终是相同的.

那么我怎样才能在部分或编辑器模板中创建也将绑定的唯一ID.

我知道而不是:

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

我可以:

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

但是当它传递给控制器​​时它不会绑定.

思考?

解决方法

试试这个

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

使用“@”动态值.现在你将获得独特的Id

在EditorFor中你可以像这样使用

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

id将生成这样的

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐