如何通过属性过滤器在 MVC 中设置 Razor 布局?

2023-11-26

我想通过基本控制器或属性中的代码设置默认的 Razor 布局。文档中提到这是可能的,但我不知道它是如何完成的。

我知道 View 方法有 masterPage 参数可用,但我希望控制器返回的所有视图都自动设置此值。

不,我不能为此使用 _ViewStart,因为我的视图将位于不同的位置(这不是正常的 MVC 站点配置)。

Thanks


我认为你可以写一个 ActionFilter 就像......

public class YourCustomLayoutAttribute : ActionFilterAttribute, IResultFilter
{
      public override void OnResultExecuting(ResultExecutingContext filterContext)
      {
           var viewResult = filterContext.Result as ViewResult;
           if(viewResult != null)
           {
              // switch the layout
              // I assume Razor will follow convention and take the "MasterName" property and change the layout based on that.
              viewResult.MasterName = "CustomLayout";
           }
       }
}

我只是凭感觉写了这段代码,没有编译器,所以它可能无法编译,但你可能明白了。我认为 IResultFilter 是您想要的正确接口,它具有在渲染视图之前执行的方法。如果这是正确的,您应该能够修改即将动态渲染的视图的 MasterName。

这将是控制器代码的用法。

[YourCustomLayout] // this should trigger your custom action result for all actions
public class MyController : Controller
{
   public ActionResult Index()
   {
      return View("Index", "MainLayout"); // even if you were to use the overload to set a master, the action result should override it as it executes later in the pipeline.
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过属性过滤器在 MVC 中设置 Razor 布局? 的相关文章

随机推荐

  • 用点填充两个文本元素之间的空间[重复]

    这个问题在这里已经有答案了 我试图找出如何自动填充两个对象之间的空间 我有菜单项和价格 目标是这样的 汉堡 9 99牛排和 马铃薯 14 99通心粉和奶酪 6 99 菜单项和价格之间的间距应该相同 用户可以输入菜单项和价格 我需要填写任何空
  • wcf中knowntype属性的问题

    我的 wcf 客户端出现以下错误 NetDispatcherFaultException 未处理 格式化程序在尝试反序列化消息时引发异常 尝试反序列化参数时出错http tempuri org GetVehicleResult InnerE
  • Grunt cssmin 变基相对 URI?

    我目前正在设置grunt usemin对于我们的项目 但我遇到了一个小问题cssmin task 我们的项目依赖于一些外部库 其中一些库带来了一些额外的资源 如图像或字体 问题是这些库没有相同的文件夹结构 这是不同文件夹结构的示例 lib
  • 如何创建 C# DLL 以在 PHP 中使用

    我正在将 C NET DLL 与 ASP NET 2 0 一起使用 它现在可以工作了 我想在 PHP 中使用相同的 DLL 我是 PHP 新手 有人可以告诉我如何在 PHP 中使用它或者你能分享一些例子吗 PHP 有一个名为 DOTNET
  • asp mvc http get 操作以对象作为参数

    在我的控制器中我采取了行动 HttpGet public ActionResult CreateAdmin object routeValues null some code return View 和http帖子 HttpPost pub
  • Apache Commons Exec 为包含空格的参数生成太多引号?

    要么是 Apache Commons Exec 中存在错误 要么是我使用了错误的 API 但是当我使用CommandLine类来添加包含空格的参数 添加一些引号 然后它们成为给定参数的一部分 例如 当我打电话时java what versi
  • 是否有屏幕尺寸大于 GL_MAX_TEXTURE_SIZE 的 Android 设备?

    我一直在寻找glbenchmark com对于屏幕尺寸 宽度或高度 大于的设备GL MAX TEXTURE SIZE 我发现了一百多个设备GL MAX VIEWPORT WIDTH and GL MAX VIEWPORT HEIGHT比 更
  • React Date Picker 隐藏在溢出父项后面(弹出窗口固定放置问题)

    我正在尝试从 React datepicker 中选择日期选择弹出窗口 以从材质 UI 菜单项中打开 我已将菜单项设为反应日期选择器输入字段 问题是我的输入字段是选择日期弹出窗口的锚点 并且弹出窗口在我的菜单中打开 我希望弹出窗口在菜单上方
  • r闪亮:在ui.R中创建小部件与renderUI + uiOutput

    我的问题更多地属于 最佳实践 类型的询问 使用时shiny封装在r 是否最好在server侧面使用renderUI然后将它们推向ui via uiOutput 或者 如果可能的话 所有小部件都应该在ui side 例如 下面的两个应用程序执
  • Firebase firestore 不更新电子邮件验证状态

    我的安全规则设置如下 在 firestore 控制台中 service cloud firestore match databases database documents match document allow read if requ
  • 未处理的承诺拒绝:TypeError:网络请求失败 expo 节点后端

    我的博览会应用程序正在查询一个节点后端 node express mongo 后端工作得非常完美 我可以使用来自 Postman 的 GET 请求进行验证 但我在我的应用程序中收到未处理的承诺拒绝 Network Failed 错误 完整错
  • 原生 C 程序中的 R.h 和 Rmath.h

    R h 和 Rmath h 是 R app 和 C 之间接口的头文件 但是 它们似乎只能通过 R 命令 R CMD SHLIB Something c 读取 我希望使用 gcc 编译我的本机 C 程序以包含它们 我正在使用 Snow Leo
  • 不使用 *printf 打印数字

    是否可以打印 到stdout 或一个文件 一个数字 int float double long等 而不实际使用任何 printf功能 printf fprintf sprintf snprintf vsprintf 如果您的 libc 包含
  • 如何修复错误:找不到 com.google.gms:google-services:3.0.0。?

    我正在尝试在我的应用程序中添加 firebase admob 在 build gradle Project 我有以下代码 buildscript repositories jcenter dependencies classpath com
  • Spring调用错误的控制器映射

    我正在使用 Spring 构建非常基本的 mvc 应用程序 它有一个控制器应该对请求主体调用验证 问题是 如果我在 web xml 中定义映射 它就会停止寻找正确的控制器 但是当我修改 servlet 应用程序上下文 Spring star
  • 检索 Spring Security 的身份验证,即使是在带有 filter="none" 的公共页面上

    假设我有一个名为 faq html 的简单页面 我希望此页面可公开访问 因此我应用了通常的 Spring Security 配置
  • 如何使用 jQuery Validate 插件测试 Recaptcha

    我正在使用验证 jquery 插件和 recaptcha 来获取联系表单 我想知道如何在提交表单之前检查验证码中的代码是否正确 如果不发送错误消息 因为现在验证所有内容 但我插入了无论如何 表单都会提交错误的代码 这是我提前输入的代码以获取
  • 用 Python 编写游戏循环的正确方法是什么?

    我正在尝试编写一个希望考虑 FPS 的 python 游戏循环 调用循环的正确方法是什么 我考虑过的一些可能性如下 我试图不使用像 pygame 这样的库 1 while True mainLoop 2 def mainLoop run s
  • 映射数据框的行

    假设我有一个包含列 c1 cn 的数据框和一个函数 f 该函数接受该数据框的列作为参数 如何将 f 应用于数据框的每一行以获得新的数据框 例如 x data frame letter c a b c number c 1 2 3 x is
  • 如何通过属性过滤器在 MVC 中设置 Razor 布局?

    我想通过基本控制器或属性中的代码设置默认的 Razor 布局 文档中提到这是可能的 但我不知道它是如何完成的 我知道 View 方法有 masterPage 参数可用 但我希望控制器返回的所有视图都自动设置此值 不 我不能为此使用 View