相同字段的MVC3 Html.DropDownListFor和html.EditorFor

时间:2013-02-28 19:30:15

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

我对MVC很新,但对ASP.Net有一些不错的经验。

我试图调查我的下拉列表中可能有一个自定义选项。下面是我的下拉列表以及我的编辑器。显然,在提交页面时,不会存储所选值和输入的数据。我想看看我是否允许在下拉列表中选择“自定义”选项,是否可以存储编辑器中输入的值而不是下拉列表选项?除非选择是下拉列表的自定义值,否则可能甚至不显示编辑器。

     @Html.DropDownListFor(model => model.Url, Model.individualPages)
     @Html.EditorFor(model => model.Url)

1 个答案:

答案 0 :(得分:2)

您可以通过为具有不同ID的其他选择生成选项并为Url属性呈现隐藏字段来执行此操作。尝试以下:

<select id="url-list">
      @foreach(var item in Model.individualPages)
       {
           <option value="@Model.Url">
              @Model.Url
           </option>
       }
        <option > custom... </option>
</select>

<input type="text" id="custom-url"/>

@Html.HiddenFor(e=>e.Url)


<script>
   $(document).ready(function(){
        $("select#url-list").change(function(){
              var selectedItem =$("option:selected",$(this)),
                    selectedValue = selectedItem.val();

              $("#url").val(selectedValue);
        });
        $("form").submit(function(){
              var selectedItem = $("option:selected",$("select#url-list")),
                    selectedIndex = selectedItem.index(),
                      itemCount = $("option",$("select#url-list")).length;
                if (selectedIndex == itemCount -1)
                     $("#url").val($("#custom-url").val());
        });
   });
</script>