文件中只允许使用一个"模型"语句

use*_*730 6 c# asp.net asp.net-mvc views asp.net-mvc-4

我尝试列出从SearchController发送的数据提供的模型数据.但是,我得到了这个错误,我找不到如何解决它.

文件中只允许使用一个"模型"语句.

这是导致错误的代码:

@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)
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决呢?

Nil*_*are 6

要做到这一点,你应该尝试这样

public class MainPageModel
  {
    public PosteModel Model1{get; set;}
    public AppMetierModel Model2{get; set;}
  }
Run Code Online (Sandbox Code Playgroud)


Ale*_*kov 6

文件中只允许使用一个"模型"语句.

你也可以

  • 将2个模型合并为一个(参见Nilesh答案)
  • 将视图拆分为控制器级别的单独视图,并为每个视图分配一个模型

样品:

 if (...) 
     return View("View1", model1);
 else 
     return View("View2", model2);
Run Code Online (Sandbox Code Playgroud)
  • 使用部分视图并在父视图中指定一些通用模型(如@model IEnumerable)和调用子视图,它将使用特定类型作为模型:

样品:

@if (ViewBag.Type == "nomApplication"))
{
      @Html.Partial("ViewForApplications", Model)
}
else
{
      @Html.Partial("ViewForWahtever", Model)
}
Run Code Online (Sandbox Code Playgroud)

在每个局部视图中,您可以指定模型类型:

// ViewForApplications 
@model IEnumerable<Monitoring.Models.AppMetierModel>
...
Run Code Online (Sandbox Code Playgroud)