gpt4 book ai didi

c# - 将数据传递到 ASP.NET MVC 中的母版页

转载 作者:IT王子 更新时间:2023-10-29 03:35:36 26 4
gpt4 key购买 nike

在不违反 MVC 规则的情况下将数据传递到母版页(使用 ASP.NET MVC)的方式是什么?

就个人而言,我更喜欢编写传递给所有 View 的抽象 Controller (基 Controller )或基类。

最佳答案

如果您希望您的 View 具有强类型 View 数据类,这可能适合您。其他解决方案可能更正确,但恕我直言,这是设计与实用性之间的良好平衡。

母版页采用强类型 View 数据类,仅包含与其相关的信息:

public class MasterViewData
{
public ICollection<string> Navigation { get; set; }
}

使用该母版页的每个 View 都采用包含其信息并派生自母版页 View 数据的强类型 View 数据类:

public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
}

因为我不希望各个 Controller 知道有关将母版页数据放在一起的任何信息,所以我将该逻辑封装到一个传递给每个 Controller 的工厂中:

public interface IViewDataFactory
{
T Create<T>()
where T : MasterViewData, new()
}

public class ProductController : Controller
{
public ProductController(IViewDataFactory viewDataFactory)
...

public ActionResult Index()
{
var viewData = viewDataFactory.Create<ProductViewData>();

viewData.Name = "My product";
viewData.Price = 9.95;

return View("Index", viewData);
}
}

继承与主视图关系很好地匹配,但是当涉及到渲染部分/用户控件时,我会将他们的 View 数据组合到页面 View 数据中,例如

public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
public SubViewData SubViewData { get; set; }
}

<% Html.RenderPartial("Sub", Model.SubViewData); %>

这只是示例代码,不能按原样编译。专为 ASP.Net MVC 1.0 设计。

关于c# - 将数据传递到 ASP.NET MVC 中的母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78548/

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