代码之家  ›  专栏  ›  技术社区  ›  frosty

MVC:如何使用DropDownListfor声明名称值

  •  5
  • frosty  · 技术社区  · 16 年前

    我在MVC中有以下下拉列表

     <%= Html.DropDownListFor(c => c.Address.Id, new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), "-- New Address --", new { @name = "[" + orderItemAddressCount + "].AddressId" })%>
    

    我正在试图覆盖DropDownList上的名称值。

    这是我得到的标记

     <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声明名称值?

    2 回复  |  直到 12 年前
        1
  •  11
  •   Darin Dimitrov    16 年前

    不能重写由 DropDownListFor 方法。它是强类型的,并且名称基于作为参数传递的lambda。如果要重写生成的名称,请选择所需的方式,您必须编写自己的扩展方法或使用非强类型 DropDownList 方法:

    <%= Html.DropDownList(
        "[0].AddressId", 
        new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), 
        "-- New Address --") 
    %>
    

    但你为什么要这么做呢?提交表单时是否绑定到同一个ViewModel?

        2
  •  5
  •   Community Mohan Dere    9 年前

    您可以使用名称中的大写N来覆盖html.dropDownListfor上的名称。查看此线程: https://stackoverflow.com/a/18344087