如何基于querystring值更改ASP.Net MVC 5中的主题?

Arjun

我想根据网址中的querystring参数动态更改MVC主题。

例如:

  1. 本地主机/ WBE /搜索/ 1
  2. 本地主机/ WBE /搜索/ 2
  3. 本地主机/ WBE /搜索/ 3

这里1,2,3是我的客户密钥,我有几个需要在我的网站中使用不同主题的客户。因此,如何根据此键更改网站的布局。

等待您的回复。

问候,Mallikharjun。

比纳德

我认为您可以在控制器动作中动态设置布局

public ActionResult Search(int customer)
{
  string layout = ... // function which get layout name with your customer id

  var viewModel = ... // function which get model

  return View("Search", layout, viewModel);
}

编辑 :

我认为,如果您想要更好的解决方案来更改所有视图中的布局,则必须创建一个ActionAttributeFilter,它将拦截结果并将布局注入到viewresult中

您的过滤器:

public class LayoutChooserAttribute : ActionFilterAttribute
{
    private string _userLayoutSessionKey = "UserLayout";


    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);


        var result = filterContext.Result as ViewResult;
        // Only if it's a ViewResult
        if (result != null)
        {
            result.MasterName = GetUserLayout(filterContext);
        }
    }

    private string GetUserLayout(ActionExecutedContext filterContext)
    {
        if (filterContext.HttpContext.Session[_userLayoutSessionKey] == null)
        {
            // I stock in session to avoid having to start processing every view
            filterContext.HttpContext.Session[_userLayoutSessionKey] = ...; // process which search the layout
        }
        return (string)filterContext.HttpContext.Session[_userLayoutSessionKey];
    }

}

您的动作变为:

[LayoutChooser]
public ActionResult Search(int customer)
{
  var viewModel = ... // function which get model

  return View("Search", viewModel);
}

如果希望该属性出现在所有操作中,则可以在FilterConfig.RegisterGlobalFilters静态方法中添加过滤器:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        ...
        filters.Add(new LayoutChooserAttribute());
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于querystring值更改ASP.Net MVC 5中的主题?

来自分类Dev

ASP.Net MVC 5中的Cookie

来自分类Dev

ASP .NET MVC 5中的异步任务

来自分类Dev

ASP.NET MVC 5中的ClaimsIdentity

来自分类Dev

在ASP.NET MVC 5中即时更改会话超时

来自分类Dev

在ASP .NET MVC 5中动态更改LAYOUT或STYLESHEET

来自分类Dev

处理ASP.NET 5 MVC 6中的密码更改

来自分类Dev

更改 url asp.net mvc 5

来自分类Dev

在ASP.NET MVC4中获取模型的QueryString

来自分类Dev

在ASP .NET MVC中更改角色权限

来自分类Dev

如何从ASP.NET MVC 5中的模型创建表单?

来自分类Dev

如何在ASP.NET 5 MVC中访问缓存?

来自分类Dev

如何更改.Net MVC中的导航栏

来自分类Dev

ASP.NET MVC 5中的DateCreated和DateModified

来自分类Dev

分页在ASP.NET MVC 5中无法正常工作

来自分类Dev

ASP.Net MVC 5中的组织区域

来自分类Dev

在ASP.NET 5(MVC6)中请求BinaryRead

来自分类Dev

Asp.Net 5(Mvc 6)中的Custom ClaimsPrincipal

来自分类Dev

在ASP.Net MVC 5中找不到区域视图

来自分类Dev

在ASP.NET MVC 5中使用mvcSitemap

来自分类Dev

ASP.NET MVC5中的复杂路由

来自分类Dev

在ASP.NET MVC 5中路由可选参数

来自分类Dev

ASP.NET MVC 5中的“通用” OpenID

来自分类Dev

在ASP.Net 5 MVC 6中添加.css

来自分类Dev

ASP.Net MVC 5中的Bootstrap DateTimePicker

来自分类Dev

在ASP.NET MVC 5中动态添加元数据

来自分类Dev

在ASP.NET MVC 5 monodevelop中创建区域

来自分类Dev

从Asp.NET MVC 5中的Controller继承

来自分类Dev

在ASP.NET MVC 5中填充User.Identity