В файле разрешена только одна инструкция model

Я пытаюсь перечислить данные, предоставленные моделями, данные, отправленные из 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)
    {
        //...
    }
}

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

2 ответов


в файле разрешена только одна инструкция "model".

вы можете

  • объединить 2 модели в одну (см. ответ Нилеша)
  • разделить виды на отдельные виды на уровне контроллера и иметь одну модель для каждого вида

пример:

 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>
...

чтобы достичь этого, вы должны попробовать вот так

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