gpt4 book ai didi

.net - ASP.NET MVC-使用Controller相应地设置主视图

转载 作者:行者123 更新时间:2023-12-04 18:54:18 26 4
gpt4 key购买 nike

通过任何机会,是否有任何简单的方法来为特定 Controller 内的所有操作设置默认的MasterView?

例如,如果我有HomeController,则我希望其内部的所有操作默认都继承Site.Master,但是如果我在AccountsController中,则希望所有操作均继承Admin.Master,依此类推。

我设法做到这一点:

return View("viewName", "masterName", objectModel);

但是通过这样做,我必须在每次调用View方法时都应用它。

我在寻找可以声明的更简单的东西:
class HomeController < ApplicationController

layout 'site'

def index
end

def create
...

end

class AccountsController < ApplicationController

layout 'admin'

def index
end

def create
...

end

那可能吗?

提前致谢

最佳答案

您可以在该Controller类中重写OnActionExecuting。

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{
ViewData["MasterfileToUser"] = "site";
}

或者,如果您愿意,可以将其转换为ActionFilterAttribute,则可以在 Controller 或操作级别上应用
using System;
using System.Web.Mvc;
public class MasterFileFilterAttribute : ActionFilterAttribute
{
public string Master { get; set; }

public override void OnActionExecuted( ActionExecutedContext filterContext)
{
if (filterContext.Result is ViewResult)
((ViewResult)filterContext.Result).MasterName = Master;
}
}

然后依次使用如下代码:
[MasterFileFilterAttribute(Master = "site")] 
public class HomeController : Controller
{
// Action methods
}

关于.net - ASP.NET MVC-使用Controller相应地设置主视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418485/

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