【问题标题】:@Html.DropDownList not showing selected value@Html.DropDownList 未显示所选值
【发布时间】:2017-12-21 16:20:36
【问题描述】:

我正在尝试创建一个局部视图以在每个视图上创建下拉菜单。已为其创建了一个视图模型和部分视图。它的创建下拉菜单正确但不显示选定的值。

下面是视图模型类

public class drowDownVM
   {
       public string id { get; set; }
       public string name { get; set; }
       public string cssClass { get; set; }
       public string keyColumnName { get; set; }
       public string valueColumnName { get; set; }
       public string selectedValue { get; set; }
       public string viewbagName { get; set; }
       public bool isMultipleSelect { get; set; }
       public List<int> multipleselectedValue { get; set; }
   }

下面是绑定下拉的局部视图

@if (Model != null)
{
   if (ViewData != null && ViewData.Count > 0 && ViewData.Keys.Contains(Model.viewbagName))
   {
       string ddName = !(string.IsNullOrEmpty(Model.name)) ? Model.name : "default-name";
       string viewBagName = !(string.IsNullOrEmpty(Model.viewbagName)) ? Model.viewbagName : ViewData.Keys.First();
       string keyColumnName = !(string.IsNullOrEmpty(Model.keyColumnName)) ? Model.keyColumnName : "id";
       string valueColumnName = !(string.IsNullOrEmpty(Model.valueColumnName)) ? Model.valueColumnName : "id";
       string selectedVal = !(string.IsNullOrEmpty(Model.selectedValue)) ? Model.selectedValue : "";
       List<int> multipleSelectVal = (Model.multipleselectedValue != null && Model.multipleselectedValue.Count > 0) ? Model.multipleselectedValue : new List<int>();
       var cssClass = !(string.IsNullOrEmpty(Model.cssClass)) ? Model.cssClass : "";
       if (!Model.isMultipleSelect)
       {
           <div>
               @Html.DropDownList(ddName, new SelectList((System.Collections.IEnumerable)ViewData[viewBagName], keyColumnName, valueColumnName, 2), "--Select--", new { @class = cssClass, @data_Val = selectedVal })
           </div>
       }
       else
       {
           @Html.ListBox(ddName, new MultiSelectList((System.Collections.IEnumerable)ViewData[viewBagName], keyColumnName, valueColumnName, multipleSelectVal), new { @class = cssClass, @multiple = "multiple"})
       }
   }
}
else
{
   <p class="hidden">Model Data Not Found!</p>
}

下面是调用局部视图绑定下拉的代码,第一个是单选,第二个是调用多选。

@Html.Partial("_dropdown", new drowDownVM() { cssClass = "form-control", id = "TargetTypeList", keyColumnName = "code_val", name = "TargetTypeList", selectedValue = "1", valueColumnName = "code_name", viewbagName = "TargetTypeList"})

@Html.Partial("_dropdown", new drowDownVM() { cssClass = "form-control", id = "TargetTypeList", isMultipleSelect = true, keyColumnName = "code_val", name = "TargetTypeList", selectedValue = "1", valueColumnName = "code_name", viewbagName = "TargetTypeList", multipleselectedValue = new List<int>() { 1, 2 } })

【问题讨论】:

  • 注意:如果您只想创建一个可重复使用的下拉组件,则无需使用部分视图,您可以尝试 MVC 中的 EditorTemplate
  • 下拉列表未显示所选值。这是什么意思 ?您没有在控制器中获得选定的值吗?或者当用户尝试在 ui 中选择一个下拉值时,它根本没有被选中?请告诉我们真正的问题。问题有点混乱
  • 假设在编辑模式下使用这个局部视图并希望显示默认选择值,当时它没有显示选择值。
  • 所以您在 UI 中获得下拉值但未选择默认值?
  • 你到底想在这里做什么?您的代码毫无意义,而且 rhis 绝对不是生成绑定到模型的表单控件的方法。

标签: c# asp.net-mvc asp.net-mvc-4 html-select asp.net-mvc-partialview


【解决方案1】:
<div>
    @Html.DropDownList(ddName, new SelectList((System.Collections.IEnumerable)ViewData[@ViewBag.ViewBagName], keyColumnName, valueColumnName, 2), "--Select--", new { @class = cssClass, @data_Val = selectedVal })
</div>

【讨论】:

  • 这可能会回答这个问题,但没有解释你做了什么以及它如何解决问题,它没有多大用处。请扩展您的答案并查看帮助中心 - stackoverflow.com/help/how-to-answer - 了解对好的答案的期望。
猜你喜欢
  • 2013-08-03
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
相关资源
最近更新 更多