您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

母版页采用强类型的视图数据类,该类仅包含与之相关的信息:

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

使用该母版页的每个视图都采用强类型化的视图数据类,该类包含其信息并从母版页视图数据派生:

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

由于我不希望各个控制器了解将母版页数据放在一起的任何信息,因此我将该逻辑封装到一个传递给每个控制器的工厂中:

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);
    }
}

继承与主视图之间的匹配关系很好,但是在渲染部分/用户控件时,我会将其视图数据组合到页面视图数据中,例如

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设计。

dotnet 2022/1/1 18:21:12 有302人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶