【问题标题】:Controller for partial views ASP.NET MVC部分视图的控制器 ASP.NET MVC
【发布时间】:2012-04-15 14:15:00
【问题描述】:

我最近刚刚开始使用 ASP.NET - MVC 4 构建一个网站,我试图弄清楚它是如何工作的。

我想在每个页面上显示一些数据,并且我知道部分视图非常适合。

是否可以创建一个始终为局部视图提供数据的控制器?或者我该如何解决?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    这称为子动作。

    致电Html.Action(...)

    【讨论】:

    • 这会产生额外的请求吗?
    【解决方案2】:

    您可以为局部视图创建控制器操作。但是,如果您正在寻找在每个页面上包含一些内容,您应该考虑将其添加到您的 _Layout.cshtml 页面中

    您可以创建一个正常的操作方法,该方法返回像这样的局部视图

    public ActionResult UserInfo()
    {
      UserViewModel objVm=GetUserInf();
      //  do some stuff
    
     return View("PartialUserInfo",objVM);
    
    }
    

    这将返回一个名称为“PartialUserInfo”的视图存在于您的Views/Users 文件夹中(假设您的控制器名称是用户。如果您想指定一个不同位置的视图,您可以在调用视图时提及它方法

    returnView("Partial/UserInfo",objVm);
    

    这将在您的Views/Users/Partial 文件夹中返回一个名为“UserInfo”的视图。

    在您的局部视图中,您可以通过这样做禁用正常布局(如果有的话)

    @model UserViewModel 
    @{
      Layout=null;
    }
    

    【讨论】:

      【解决方案3】:

      一种方法是为父视图(托管所有局部视图的模型)创建一个模型,其中包含局部视图的模型作为其模型的属性

      前:

      MainModel.ModelForPArtialView1
      MainModel.ModelForPArtialView2
      MainModel.ModelForPArtialView3
      

      这样你就可以在父视图上做到这一点

      @Html.Partial("PartialView1",MainModel.ModelForPArtialView1)
      @Html.Partial("PartialView2",MainModel.ModelForPArtialView2)
      @Html.Partial("PartialView3",MainModel.ModelForPArtialView3)
      

      【讨论】:

      • 解决方案还取决于内容是否跨视图发生变化。部分的内容在所有父视图中是否完全相同?
      猜你喜欢
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多