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

2023-11-25

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

就我个人而言,我更喜欢编写传递给所有视图的抽象控制器(基本控制器)或基类。


如果您希望视图具有强类型视图数据类,这可能适合您。其他解决方案可能更多correct但恕我直言,这是设计和实用性之间的一个很好的平衡。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 中将数据传递到母版页 的相关文章

随机推荐

  • 如何使用新线程库中的 Task.Wait For Any?

    尝试使用Delphi中的线程库并行计算任务并使用TTask WaitForAny 为了得到第一个计算结果 偶尔会出现异常停止执行 异常时的调用堆栈 第一次机会例外 价格为 752D2F71 美元 异常类 EMonitorLockExcept
  • TextView 中的整数值

    如何在 TextView 中显示整数值 当我尝试时 出现错误android content res Resources NotFoundException String resource ID TextView tv new TextVie
  • 如何在Java 8中逐行读取文件?

    在Java 8中 我看到Files类中添加了名为lines 的新方法 该方法可用于在Java中逐行读取文件 它适用于大文件吗 我的意思是我们可以加载前 1000 行 然后加载第二组 1000 行吗 我有 1GB 的大文件 可以吗 有人可以分
  • 狮身人面像和“你的意思是……?”建议想法。它会起作用吗?

    我正在尝试想出最快的方法来提出搜索建议 起初我认为 Levenstein UDF 函数与 mysql 表相结合就可以完成这项工作 但是使用 levenshtein mysql 必须遍历表中的每一行 大量的单词 这会使查询非常慢 现在我最近安
  • 如何用等角透视进行渲染? [复制]

    这个问题在这里已经有答案了 可能的重复 使用opengl进行真正的等角投影 我想使用 Blender3d 使用的相同等距渲染进行渲染 我该怎么做 是否可以仅调用 glMultMatrix 我尝试谷歌搜索 但找不到任何可以导致这种渲染模式的工
  • Kotlin 中默认构造函数中的两个附加类型?

    自从我一直在使用kotlin 反射为了调用我的默认值和声明的构造函数 我看到了第二个不同的构造函数 我意识到两个不同的领域int arg3 and kotlin jvm internal DefaultConstructorMarker a
  • Visual Studio 2015 中的 TFS 生成资源管理器在哪里?

    我在 Windows 8 上运行 Visual Studio Enterprise 2015 RTM 在 Visual Studio 2013 中 构建资源管理器位于团队资源管理器 gt 构建 gt 操作 gt 管理队列中 Visual S
  • Typescript 泛型中对接口成员的约束

    我有一个方法 应该接受任何对象 只要它的所有字段都是字符串或数字 我做了这个 它非常适合鸭子打字 static interpolateParams route string params key string string number s
  • 一个很好的 C 随机数生成器

    我需要一个好的随机数生成器来用于我用 C 编写的程序 如果您感兴趣的话 它是一个分形火焰生成器 尽管我过去使用相同的算法取得了成功 但我的图像仍然非常粗糙 我最终意识到 区别在于我使用的随机数生成器 令人难以置信的是 它产生了巨大的变化 我
  • Linq 查询适用于 null 但不适用于 int?在 where 子句中

    我有一个像 简化的 的 linq 查询函数 public IList
  • Windows Phone 8.1 位置跟踪

    我想实现一个将设备位置持续发送到网络服务的应用程序 查看文档 我发现了 Geolocation 类和一些讨论位置跟踪的文章 如何持续跟踪 Windows Phone 8 手机的位置 如何在 Windows Phone 8 后台运行位置跟踪应
  • java中如何调整文本大小

    我发现在 Photoshop 中 只需拖动文本即可轻松调整文本大小 我们如何在 Java 中做同样的事情 关于如何在java中调整文本大小有什么想法吗 添加了在 Photoshop 中调整大小的字母 A 的快照 请让我知道这段代码有什么问题
  • 如何使用 XPath 获取属性的值

    我一直在使用 Selenium WebDriver 进行测试 并且一直在寻找 XPath 代码来获取 HTML 元素的属性值 作为回归测试的一部分 但我找不到一个好的答案 这是我的示例 html 元素 div class firstdiv
  • 如何实现android视频播放器全屏播放

    我已经实现了android视频播放器 但我不需要像这样我需要什么意思当我打开活动时我需要支付视频半屏在中心当我点击按钮全屏按钮然后我需要全屏支付 如何实现它帮助我 视频播放器活动 public class VideoPlayerActivi
  • 如何在intellij idea编辑器中删除顶行面包屑?

    我在弄清楚 IntelliJ Idea Community Edition 15 中的此显示栏时遇到问题 有谁知道这是什么和 或如何将其关闭 它被称为当前代码位置的面包屑菜单 例如 在您的图像中 您处于类 Display gt 方法 Dis
  • 通过 JDBC 集成 Spark SQL 和 Apache Drill

    我想根据使用 Apache Drill 对 CSV 数据 在 HDFS 上 执行查询的结果创建 Spark SQL DataFrame 我成功配置了 Spark SQL 使其通过 JDBC 连接到 Drill Map
  • 如何将 JSON 格式的数据从 WebView 传递到 HTML 页面

    我正在尝试将 JSON 格式的数据从 Android WebView 传递到 HTML 页面 但是 每当我尝试解析原始 JSON 数据时 应用程序就会崩溃 我希望其格式为 key data 我的应用程序的目标是解释此 JSON 数据 将其形
  • 如何检测 Angular2 中的变量变化

    我有以下配置对象 它是在构造函数运行之前设置的 config Object onSlideChangeEnd function slide any this currentSlideIndex slide activeIndex 我想通知服
  • 如何使用 C# 获取 IIS 中网站的“浏览”URL?

    假设我在 IIS 中有 站点名称 网站 我可以通过以下方式访问它的大部分功能服务器管理器我的 C 代码中的类 我似乎不知道如何获取它的 浏览 URL 就像我在下面的屏幕截图中所示的那样 如果我进入 管理网站 gt 浏览 IIS管理器 它将使
  • 在 ASP.NET MVC 中将数据传递到母版页

    在不违反 MVC 规则的情况下将数据传递到母版页 使用 ASP NET MVC 的方法是什么 就我个人而言 我更喜欢编写传递给所有视图的抽象控制器 基本控制器 或基类 如果您希望视图具有强类型视图数据类 这可能适合您 其他解决方案可能更多c