2017-03-05 17 views
0

Dies funktioniert jetzt, da der Benutzer einen der Dropdown-Werte auswählen muss. Wie setze ich den Dropdown-Wert auf "Rate1", wenn der aktuelle Wert leer ist? (Das ist, wie es ist, wenn die modalen Lasten)So wählen Sie einen Standardwert aus dem Dropdown-Menü aus

und schließlich den Zustandes @class set = „form-control“ zu: @class = „form-Steuerung bearbeitet“, wenn die modalen Lasten mit dem ausgewählten Wert?

Ich habe dies als eine Lookup mit 4 Raten in meinem Drop fülle unten:

case "BillingRates": 
      { 
       strArrays = new string[] { "Rate1", "Rate2", "Rate3", "Rate4" }; 
       for (i = 0; i < (int)strArrays.Length; i++) 
       { 
        string str4 = strArrays[i]; 
        lookups.Add(new Lookup() 
        { 
         Text = str4, 
         Value = str4, 
         TenantId = currentTenantId, 
         Selected = false, 
         Disabled = false, 
         Group = null, 
         AssociatedClass = string.Empty 
        }); 
       } 
       break; 
      } 

ich diese foreach auch das BillingRates für die Drop-Down-Lookup verwenden, um:

foreach (Lookup lookupItem in (new LookupFill("BillingRates", num)).LookupItems) 
     { 
      SelectListItem selectListItem3 = new SelectListItem() 
      { 
       Text = lookupItem.Text, 
       Value = lookupItem.Value, 
       Disabled = lookupItem.Disabled, 
       Selected = lookupItem.Selected 
      }; 
      selectListItems5.Add(selectListItem3); 
     } 
     SelectListItem selectListItem4 = new SelectListItem() 
     { 
      Text = "", 
      Value = "", 
      Disabled = false 
     }; 

Dann habe ich diese in meiner cshtml Datei für Variablen:

var selectedBillingRate = string.Empty; 
var BillingRates = ViewData["BillingRates"] as IEnumerable<SelectListItem>; 
foreach (var item in BillingRates) 
{ 
    if (item.Value == Model.Invoice.BillingRate) { selectedBillingRate = item.Value; break; } 
} 
var BillingRateSelect = new SelectList(BillingRates, "Value", "Text"); 


var selectedBillingRate = '@Html.Raw(selectedBillingRate)'; 
     $('#BillingRate').val(selectedBillingRate); 

Schließlich habe ich dies als meine Dropdownlist:

@Html.DropDownList("BillingRate", BillingRateSelect, new { id = "BillingRate", required = "required", @class = "form-control" + (!string.IsNullOrEmpty(Model.Invoice.BillingRate) || !string.IsNullOrEmpty(selectedBillingRate) ? " edited" : "") }) 
+0

Die 'DropDownList()' (und die bevorzugte 'DropDownListFor()') Methode bindet an den Wert Ihrer Eigenschaft. Sie müssen den Wert von 'BillingRate' in der GET-Methode festlegen, bevor Sie das Modell an die Ansicht übergeben (und die Eigenschaft' Selected' von 'SelectListItem' wird beim Binden an eine Modelleigenschaft ignoriert) –

+0

@StephenMuecke danke jedoch Wo würdest du vorschlagen, dass ich das am besten mache? Ich habe diesen Code geerbt und bin mir nicht sicher, wo oder was genau zu tun ist, um den Wert von 'BillingRate' in der GET-Methode für alles andere festzulegen, was gerade passiert? Danke noch einmal! – zberg007

+0

Sie haben Ihr Modell oder die GET-Methode nicht angezeigt, aber wenn Sie es als - 'var model = ...; 'initialisieren (ein Code füllt das Modell), dann könnten Sie einfach etwas wie' if (model.BillingRate = = null) {model.BillingRate = someValue; }; return View (Modell); ' –

Antwort

0

Ich landete einfach diese von oben ersetzt bis: var selectedBillingRate = string.Empty; mit diesem: var selectedBillingRate = "Rate1"; und es scheint, wie gewünscht zu arbeiten.

Ich weiß, dies ist wahrscheinlich nicht der beste Weg zu erreichen und @ StephenMueke ist der beste Weg, dies zu tun, jedoch konnte ich nicht die richtige GET-Methode finden, um den Wert der BillingRate wie gewünscht im Voraus einzustellen. Meine schlechte, immer noch lernen. Danke nochmal an StephenMuecke für das kommentieren und mich weiter forschen.

Verwandte Themen