gpt4 book ai didi

c# - asp.net mvc 2 多个局部 View

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:21 25 4
gpt4 key购买 nike

我有一个 Controller 可以呈现 3 个不同的 View 。但是对于每个 View ,我也有一个公共(public)部分 (div)。我认为我可以创建一个带有自己的 Controller 的 UserControl 并将该控件包含在我的 View 中(新 Controller 和 View 作为控件)。

我应该如何使用该 UserControl?应该是局部 View 吗?或者不同的方法 - 我可以在一个页面上有多个局部 View 吗?

最近几天我一直在网上搜索,但没有找到适合我的工作解决方案。我也想使用强类型 View /数据。

干杯

最佳答案

您应该使用分部 View 。然后你打电话<% Html.PartialRender("MyCommonControl", Model); %>在 3-4 View 中呈现公共(public)部分(如菜单或其他内容)。

通过这种方式,您可以强类型化局部 View 并将模型(如上例所示)或相关模型的一部分传递给它。

UserControl 确实是一种 ASP.NET 窗体范例,您应该使用部分 View ,因为它们使用相同的 MVC View 引擎。

更新

如果将 PartialView 放在 /Views/Home 中只有 HomeController 才能访问它你想把它放在 /Views/Common使其可供所有 Controller 访问。

您还应该为控制所需的数据创建一个通用 ViewModel,并将其作为每个 Controller 模型的子组件:

例如:

class CommonSectionViewModel
{
public string Data { get; set; } // Just Example Data
public int Count { get; set; }
}

class ProductsModel
{
public CommonSectionViewModel CommonData { get; set; }
// Other properties for a products models
}

class CompaniesModel
{
public CommonSectionViewModel CommonData { get; set; }
// Other properties for a company model
}

然后在您的 Controller 的 View 中,您可以这样调用局部渲染:

<% Html.PartialView("MyCommonControl", Model.CommonData); %>

注意:您也可以覆盖控件

具有以下文件:

  1. /Views/Common/MyCommonControl.ascx
  2. /Views/Products/MyCommonControl.ascx

当您调用 .RenderPartial("MyCommonControl") 时来自 ProductsController使用#2,从任何其他 Controller ,使用#1。因此,您可以根据需要覆盖某些 Controller 的功能。

关于c# - asp.net mvc 2 多个局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2791058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com