2014-01-29 4 views
6

Я пытаюсь перечислить данные, предоставленные данными моделей, отправленные с SearchController. Но, я получил эту ошибку, я не могу найти, как ее исправить.Только один оператор «модели» разрешен в файле

В файле допускается только одно выражение 'model'.

Вот код вызывает ошибку:

@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) 
    { 
     //... 
    } 
} 

Как исправить это, пожалуйста?

ответ

5

Только одна «модель» заявление разрешается в файле.

Вы можете

  • слияние 2 модели в одном (см Nilesh ответ)
  • расщепленные просмотров в отдельных видах на уровне контроллера и имеют одну модель для каждого вида

Пример:

if (...) 
    return View("View1", model1); 
else 
    return View("View2", model2); 
  • использование частичные и указать некоторую общую модель в родительском представлении (как @model IEnumerable) и вызвать суб-вид, который будет использовать определенный тип в качестве модели:

Пример:

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

И в каждом частичном виде вы можете указать тип модели:

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

для достижения этой цели, вы должны попробовать, как этот

public class MainPageModel 
    { 
    public PosteModel Model1{get; set;} 
    public AppMetierModel Model2{get; set;} 
    } 
Смежные вопросы