2014-01-29 4 views
6

Ich versuche, Datenmodelldaten anzugeben, die von einem SearchController gesendet wurden. Aber ich habe diesen Fehler, den ich nicht finden kann, wie man es repariert.In einer Datei ist nur eine "Modell" -Anweisung zulässig

In einer Datei ist nur eine 'model' Anweisung erlaubt.

Hier ist der Code den Fehler verursacht:

@if (ViewBag.Type == "nomPoste") 
{ 
    @model IEnumerable<Monitoring.Models.PosteModel> 

    if (Model != null) 
    { 
     foreach (var item in Model) 
     { 
      //... 
     } 
    } 
    if (Model == null) 
    { 
     //... 
    } 
} 

@if (ViewBag.Type == "nomApplication") 
{ 
    @model IEnumerable<Monitoring.Models.AppMetierModel> 

    if (Model != null) 
    { 
     foreach (var item in Model) 
     { 
      //... 
     } 
    } 
    if (Model == null) 
    { 
     //... 
    } 
} 

Wie kann ich es beheben könnte, bitte?

Antwort

5

Nur ein ‚Modell‘ Anweisung in einer Datei erlaubt versuchen sollte.

Sie können entweder

  • merge 2 Modelle in einem (siehe Nilesh Antwort)
  • geteilte Ansichten in verschiedenen Ansichten auf Controller-Ebene und ein Modell für jede Ansicht haben

Probe:

if (...) 
    return View("View1", model1); 
else 
    return View("View2", model2); 
  • verwenden Teilansichten und einige gemeinsame Modell in übergeordneten Ansicht angeben (wie @model IEnumerable) und Unteransicht aufrufen, die bestimmte Art als Modell verwenden:

Probe:

@if (ViewBag.Type == "nomApplication")) 
{ 
     @Html.Partial("ViewForApplications", Model) 
} 
else 
{ 
     @Html.Partial("ViewForWahtever", Model) 
} 

Und in jedem Teilansicht können Sie festlegen, Modelltyp:

// ViewForApplications 
@model IEnumerable<Monitoring.Models.AppMetierModel> 
... 
6

dies erreichen Sie dieses

public class MainPageModel 
    { 
    public PosteModel Model1{get; set;} 
    public AppMetierModel Model2{get; set;} 
    } 
Verwandte Themen