有人使用自定义 ViewMasterPage 吗?

2024-04-21

最近,当我构建我的 ASP.NET MVC 应用程序时,我倾向于在我的母版页中始终需要计算、格式化和配置许多项目。其中一些项目包括:

  • 我喜欢将特定的类附加到 body 标记,就像 WordPress 那样来帮助我的 CSS 解决问题。我通常会附上操作的名称、控制器、页面模板等。
  • 我喜欢在我的母版页中使用自定义 IIdentity。这个IIdentity包括用户的nice Display Name、UserID、UserName等。
  • 等等...取决于项目

我实现这一目标的方式也发生了变化。我首先发送 ViewData 以及每个操作结果来填充母版页中的内容。示例->

// in the action
ViewData["BodyClasses"] = "index home default";
ViewData["UserData"] = userData;

return View();

// in the master page
<% UserData userData = (UserData)ViewData["UserData"] %>
...
<body class="<%= (string)ViewData["BodyClasses"] %>">

那太可怕了。因此,我开始在母版页的顶部放置一些变量,并根据我们必须在母版页中使用的对象填充它们。示例->

<%@ Master Language="C#" Inherits="System.Web.MVC.ViewMasterPage" %>
<% string controller = ViewContext.RouteData.Values["controller"].ToString().ToLower();
   string action = ViewContext.RouteData.Values["action"].ToString().ToLower(); 
   CustomIdentity identity = (CustomIdentity)User.Identity %>

...

<body class="no-js <%= controller + " " + action %>">

这更好,但我觉得必须有一个更简单的解决方案。我开始尝试创建自定义 ViewMasterPage 并添加一些公共属性。是否有其他人在母版页上执行此操作,或者是否有其他我完全缺少的解决方案?


我只使用常规内容占位符来表示正文标记 ID 和类。

<body id="<asp:ContentPlaceHolder ID="BodyTagId" runat="server" />">

然后在引用母版页的给定页面中使用它:

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

有人使用自定义 ViewMasterPage 吗? 的相关文章

随机推荐

  • 使用 oAuth 或其他方式实施访问

    我正在尝试想办法向其他第三方网站开放网站及其部分数据库 类似于 Twitter 让网络应用程序连接到其数据库以检索数据并可能存储数据的方式 我最初的研究让我想到了 oAuth 或者是 openID 我需要做的是让第三方网站登录网站上的用户帐
  • 在 MATLAB 中将数组拆分为多个部分

    我想将数组分成相等的部分 如下所示 a 1 2 3 4 5 6 7 8 9 10 n 2 b split a n b 1 2 3 4 5 6 7 8 9 10 哪个函数可以做到这一点 尝试这个 a 1 2 3 4 5 6 reshape a
  • 想要为 Android Activity 提供半透明背景?

    我希望某个活动有一个半透明的背景 以便可以在该活动下方看到之前的活动 类似于在后台播放的视频上方弹出的半透明菜单 这可能吗 你能告诉我怎么做吗 注意 我无法使用 Android 的默认半透明主题 因为我正在为我的应用程序使用我自己的自定义背
  • 指向数组元素

    我想要实现的目标是说我有一个数组 我希望能够通过指向它来修改整个代码中的特定数组元素 例如在 C 中我可以这样做 int main int arr 5 1 2 3 4 5 int c arr 3 cout lt lt arr 3 lt
  • Xcode 12 和 OSLog (os.log):包装 OSLogMessage 导致编译错误:参数必须是字符串插值

    在 Xcode 12 iOS 14 中 OSLog 获得了对字符串插值的支持 耶 但仍然无法附加挂钩以轻松登录到其他渠道 例如 Crashlytics 所以我想我只需制作一个简单的包装器并传递参数即可 然而 关于字符串插值似乎发生了一些神奇
  • “无法开始调试”-VS2010 ASP.NET MVC 2

    我只能使用 VS2010 和 ASP NET MVC2 启动一次调试会话 当我结束第一个会话并尝试启动另一个会话时 我可以看到 无法开始调试 没有其他消息 我使用 Visual Studio Development Server 而不是 I
  • 删除单链表中的节点

    如何删除只有一个指针指向要删除节点的单链表中的节点 起始和结束指针未知 可用信息是指向应删除节点的指针 您可以在不获取前一个节点的情况下删除节点 方法是让它模仿以下节点并删除该节点 void delete Node n if is sent
  • SMLoginItemSetEnabled - 从应用程序沙盒登录开始 - Xcode 6.3(插图)

    当应用程序沙箱化时 如何使应用程序具有登录时启动功能 感谢 CORY BOHON 他创建了以下教程 http martiancraft com blog 2015 01 login items http martiancraft com b
  • 在 Pandas Lambda 函数中使用带有多个 if 语句的 Apply

    我试图根据数据框中人的大小来推断分类 如下所示 Size 1 80000 2 8000000 3 8000000000 我希望它看起来像这样 Size Classification 1 80000 lt 1m 2 8000000 1 10m
  • 我们可以在 OpenAPI/Swagger 2.0 中设置全局“消费”和“生产”吗?

    在我需要设置的每个路径中consumes and produces 我可以全局设置它们吗 post summary description consumes application json application xml produces
  • 将字典存储在 pandas 数据框中

    我想将字典存储到数据框中 dictionary example 1234 choice 0 choice set 0 A 100 B 200 C 300 1 A 200 B 300 C 300 2 A 500 B 300 C 300 234
  • 请求单个位置更新,AVD 崩溃

    我尝试使用新的 LocationManager requestSingleUpdate 方法请求单个位置更新 但是一旦设备从 GPS 获取更新 操作系统就会崩溃 并且似乎会尝试重新启动 至少我看到了通常的 Android 启动屏幕 但它永远
  • Python读取文件内容[重复]

    这个问题在这里已经有答案了 在Python中 如何像Java中的InputStream一样只读取文件内容 不包括属性和文件名 我需要一种适用于各种文件格式的方法 我试过这个 with open filePath rb as imageFil
  • 如何在 Ubuntu 上安装 Impala? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我要安装Impala https impala apache org 在 Ubuntu 实例上 到目前为止 以下方法都不起作用 如何在 U
  • 在 4 个 CPU 上执行 CPU 密集型任务时,20 个进程中的 400 个线程优于 4 个进程中的 400 个线程

    这个问题非常类似于在执行 I O 密集型任务时 20 个进程中的 400 个线程优于 4 个进程中的 400 个线程 https stackoverflow com q 56272639 303363 唯一的区别是链接的问题是关于 I O
  • Laravel 5.3 对数据库进行查询并将其传递给所有视图

    我有一些动态数据 我想从数据库中获取并将其传递给所有视图 我尝试从互联网上举一些例子 但它们似乎不适用于我的情况 例如 public function boot 我无法使数据库查询仅传递硬编码值 我尝试过的另一种方法是基本控制器 但访问变量
  • 为什么不同的长值会转换为相同的日期/时间?

    public static void getTime SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd HH mm ss Time t1 new Time Long parseLong
  • PHP 使用带有标头的 cURL 和 GET 请求

    过去有一些更棘手的问题 如下所示 如何从 PHP 发送带有标头的 GET 请求 https stackoverflow com questions 19259490 how do i send a get request with a he
  • Docker 1.10 通过主机名从主机访问容器

    我有带有嵌入式 DNS 服务的 Docker 版本 1 10 我在 docker compose 文件中创建了两个服务容器 它们可以通过主机名和 IP 相互访问 但是当我想从主机访问其中之一时 它不起作用 它仅适用于 IP 但不适用于主机名
  • 有人使用自定义 ViewMasterPage 吗?

    最近 当我构建我的 ASP NET MVC 应用程序时 我倾向于在我的母版页中始终需要计算 格式化和配置许多项目 其中一些项目包括 我喜欢将特定的类附加到 body 标记 就像 WordPress 那样来帮助我的 CSS 解决问题 我通常会