0

Ich versuche, eine Teilansicht zu erstellen Drop-Down auf jeder Ansicht erstellen. Habe ein View-Modell und eine Teilansicht für dasselbe erstellt. Die Erstellung erfolgt ordnungsgemäß, zeigt aber keinen ausgewählten Wert an.@ Html.DropDownList zeigt keinen ausgewählten Wert

Nachfolgend finden Ansicht Modell Klasse

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; } 
    } 

Below Teilansicht ist unten

@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> 
} 

Below zu binden Drop ist der Code, der Teilansicht ruft nach unten zu binden fallen, erste ist Single wählen, der zweite ruft mehrere select auf.

@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 } }) 
+0

Hinweis: Wenn Sie keine Notwendigkeit, nur dann zu gehen, um eine resusable Drop-Down-Komponente erstellen möchten für Teilansichten Sie EditorTemplate in MVC –

+0

Dropdown-Liste zeigt, nicht ausgewählten Wert versuchen. was es bedeutet ? Sie erhalten den ausgewählten Wert nicht im Controller? oder wenn ein Benutzer versucht, einen Dropdown-Wert in ui zu wählen, zu dieser Zeit ist es überhaupt nicht ausgewählt ?? Bitte erzähle uns das wahre Problem. Die Frage ist wenig verwirrend –

+0

Angenommen, diese Teilansicht wird im Bearbeitungsmodus verwendet und soll den standardmäßig ausgewählten Wert anzeigen. Zu diesem Zeitpunkt wird der ausgewählte Wert nicht angezeigt. – DaxeshVora

Antwort

0
<div> 
    @Html.DropDownList(ddName, new SelectList((System.Collections.IEnumerable)ViewData[@ViewBag.ViewBagName], keyColumnName, valueColumnName, 2), "--Select--", new { @class = cssClass, @data_Val = selectedVal }) 
</div> 
+2

Dies könnte die Frage beantworten, aber ohne eine Erklärung dessen, was Sie getan haben und wie es das Problem behebt, wird es nicht viel genutzt. Bitte erweitern Sie Ihre Antwort und überprüfen Sie die Hilfe - https://stackoverflow.com/help/how-to-answer - um zu sehen, was von einer guten Antwort erwartet wird. –