【问题标题】:MVC3 Html.DropDownListFor and html.EditorFor for same fieldMVC3 Html.DropDownListFor 和 html.EditorFor 用于同一字段
【发布时间】:2013-02-28 19:30:14
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以通过为具有不同 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多