我在mvc中有以下下拉列表
<%= Html.DropDownListFor(c => c.Address.Id, new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), "-- New Address --", new { @name = "[" + orderItemAddressCount + "].AddressId" })%>
我正在尝试覆盖下拉列表中的名称值。
这是我得到的标记
<select id="Address_Id" name="Address.Id"><option value="">-- New Address --</option>
这是我想要的标记
<select id="Address_Id" name="[0].AddressId"><option value="">-- New Address --</option>
如何使用DropDownListFor声明名称值?
答案 0 :(得分:11)
您无法覆盖DropDownListFor
方法生成的名称。它是强类型的,名称基于您作为参数传递的lambda。如果要以您希望的方式覆盖生成的名称,则必须编写自己的扩展方法或使用非强类型DropDownList
方法:
<%= Html.DropDownList(
"[0].AddressId",
new SelectList(Model.Addresses, "id", "Name", Model.Address.Id),
"-- New Address --")
%>
但是你为什么要这样做呢?提交表单时,您不是绑定到同一个ViewModel吗?
答案 1 :(得分:5)
您可以通过在Name中使用大写N来覆盖Html.DropDownListFor上的名称。请参阅此主题:https://stackoverflow.com/a/18344087