2017-01-06 2 views
0

Mvc-Anwendung mit einfachen Controller, wo ich eine Ansicht mit einem Modell zurückgeben. in die Ansicht erstellen. Couse der großen Anzahl von Dropdown-Listen habe ich mehrere Viewbags (13).Viewdata/Viewbag ist leer in der Editvorlage MVC

In der Ansicht arbeite ich mit editortemplates, um die komplexen Objekte aus meinem Modell anzuzeigen.

Das Problem ist, dass in den Editortemplates mehrere Viewbags leer sind.

Wenn ich den Debugger im Controller stoppen lasse, sind meine Viewbags alle korrekt gefüllt.

Wenn ich den Debugger in der Ansicht anhalten, kann ich sehen, dass einige von ihnen leer sind.

wath kann dieses Problem verursachen?

Controler:

public ActionResult SetNewInputForm(InitializeNewInputViewModel model) 
    { 

     var Input = new Input(model.AantalPrimairen,model.AantalSecundairen); 
     ViewBags(); 
     return View(Input); 
    } 

     private void ViewBags() 
    { 
     ViewBag.Blikvorm = Enum.GetNames(typeof(Common.BlikVorm)).ToList(); 
     ViewBag.Kwaliteit = Database.Kwaliteit.ToList(); 
     ViewBag.BlikFabrikanten = Database.BlikFabrikant.ToList(); 
     ViewBag.Walserijen = Database.Walserij.ToList(); 
     ViewBag.BlikMontage = new SelectList(Database.KernMontage.ToList(), "Id", "KernMontageNaam"); 
     ViewBag.SchakelWijze = Enum.GetNames(typeof(Common.SchakelWijze)).ToList();   
     ViewBag.AantalGaten = Enum.GetNames(typeof(Common.AantalGaten)).ToList(); 
     ViewBag.DiameterGaten = Database.DiameterGat.ToList(); 
     ViewBag.BlikFormaat = Database.BlikFormaat.ToList(); 
     ViewBag.KernMontage = Database.KernMontage.ToList(); 
     ViewBag.KokerFabrikanten = Database.KokerFabrikant.ToList(); 
    } 

Teil meiner Ansicht

@model DomainClasses.Input 


@using (Html.BeginForm("Create", "Input", FormMethod.Post)) 
{ 
<div class="containter"> 
    <div class="row"> 
     <div class="col-lg-4 "> 
      <div class="form-group"> 
       <strong> @Html.DevExpress().LabelFor(t => t.SchakelwijzePrimair).GetHtml()</strong> 
       @Html.DevExpress().ComboBoxFor(t => t.SchakelwijzePrimair, 
    settings => 
    { 
     settings.Name = "SchakelwijzePrimair"; 

    }).BindList(ViewBag.Schakelwijze).GetHtml() 

      </div> 
      @Html.EditorFor(m => m.Primairen, Model.Primairen); 
     </div> 
     <div class="col-lg-8"> 

      @Html.EditorFor(m => m.Secundairen, Model.Secundairen); 
     </div> 

    </div> 
</div> 
<div class="containter"> 
    <div style="padding:1em; 
     margin:10px 5px; 
     border-style:inset; 
     background-color: aquamarine; 
     overflow:auto"> 
     @Html.EditorFor(m => m.BlikAfmeting, Model.BlikAfmeting) 
    </div> 
</div> 

Teil meiner Editor Vorlage:

@model DomainClasses.BlikAfmeting 


<h4 class="modal-title"> Blik Afmetingen</h4> 
<div class="col-lg-2"> 
<div class="form-group"> 

     @Html.DevExpress().Label(settings => 
{ 
    settings.Name = "ChooseBlikAfmetingComboLabel"; 
    settings.Text = "Blikformaten"; 
}).GetHtml() 
     @Html.DevExpress().ComboBox(
    settings => 
    { 
    settings.Name = "ChooseBlikAfmetingCombo"; 
    settings.Properties.DropDownStyle = DropDownStyle.DropDownList; 
    settings.Properties.CallbackPageSize = 15; 
    settings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.StartsWith; 
    settings.Properties.TextFormatString = "{0} {1}"; 
    settings.Properties.ValueField = "Id"; 
    settings.Properties.NullText = "Kies BlikFormaat"; 
    settings.Properties.ValueType = typeof(string); 
    //settings.Properties.ClientSideEvents.ValueChanged = "function(s, e) { GetBlikAfmetingTabel(s,e); }"; 
    settings.Properties.Columns.Add("BlikVorm", "Blik Vorm", 90); 
    settings.Properties.Columns.Add("HoofdAfmeting", "Hoofd Afmeting", 90); 

} 
).BindList(ViewBag.BlikFormaat).GetHtml() 

Viewbag.Blikformaat leer ist die ganze Zeit Viewbag.BlikVorm ist leer in 2 der 3 editorTemplates.

+0

fügen Sie Ihren Controller und HTML-Code, um herauszufinden, was falsch läuft – Curiousdev

+0

Zusätzliche Anmerkung Wenn ich die gleiche Combobox auf der Ansicht setzen, anstatt in den editortemplate es –

+0

Bitte beachten Sie funktioniert, dass der Model-View-Controller-Tag ist für Fragen zum Muster. Es gibt ein bestimmtes Tag für die ASP.NET-MVC-Implementierung. –

Antwort

0

Setzen Sie Ihre alle Viewbags in ActionResult Methode wie folgt.

public ActionResult SetNewInputForm(InitializeNewInputViewModel model) 
    { 
     var Input = new Input(model.AantalPrimairen,model.AantalSecundairen); 
     ViewBag.Blikvorm = Enum.GetNames(typeof(Common.BlikVorm)).ToList(); 
     ViewBag.Kwaliteit = Database.Kwaliteit.ToList(); 
     ViewBag.BlikFabrikanten = Database.BlikFabrikant.ToList(); 
     ViewBag.Walserijen = Database.Walserij.ToList(); 
     ViewBag.BlikMontage = new SelectList(Database.KernMontage.ToList(), "Id", "KernMontageNaam"); 
     ViewBag.SchakelWijze = Enum.GetNames(typeof(Common.SchakelWijze)).ToList();   
     ViewBag.AantalGaten = Enum.GetNames(typeof(Common.AantalGaten)).ToList(); 
     ViewBag.DiameterGaten = Database.DiameterGat.ToList(); 
     ViewBag.BlikFormaat = Database.BlikFormaat.ToList(); 
     ViewBag.KernMontage = Database.KernMontage.ToList(); 
     ViewBag.KokerFabrikanten = Database.KokerFabrikant.ToList(); 
     return View(Input); 
    } 
+0

bereits getan. –

+0

, damit Ihr Problem gelöst wurde oder nicht? – Curiousdev

+0

Nein, mein Name wird nicht aufgelöst. Ich habe eine Umgehung dafür gemacht, jetzt rufe ich aus meiner Sicht ein Repository auf. Aber ich möchte wissen, warum einige Viewbags in der Editvorlage leer sind und einige nicht. Wenn ich die Viewbags nur aus meiner Sicht anrufe funktioniert alles einwandfrei. –