如何在MVC中自动覆盖视图

时间:2013-09-16 19:01:42

标签: c# asp.net-mvc

我们有一个MVC网站,我现在正在添加移动视图,并使用jquery mobile进行优化。 所有控制器和型号都保持不变。

因此,假设您有一个返回视图的典型控制器:

    public virtual ActionResult CustomerProfile()
    {                
       return View(CurrentCustomer);
    }

我想检查一下是否设置了一个会话变量,说明 IsMobileView == true ,如果是,我希望它返回相同的视图名称... EXCEPT后缀aspx文件名中的“_Mobile”。

所以在上面的例子中,假设我们用attibute [SupportsMobile]装饰方法,如果设置了session变量,它将使用“CustomerProfile_Mobile.aspx”作为视图。如果它没有[SupportsMobile]或会话未设置为移动模式,它应该正常返回CustomerProfile.aspx。

这需要使用语法返回View(“CustomerSearch”,model),如果条件合适,它将返回CustomerSearch_Mobile.aspx。

如何办理入住手续?我显然可以覆盖控制器中的各种动作事件,但我需要拦截视图加载的位置。

提前致谢!詹姆斯。

1 个答案:

答案 0 :(得分:2)

您不需要使用会话。为此,您应该使用DisplayModeProvider或其他现代api,例如51Degrees ASP.NET团队

提供了大量信息

Mobile Apps & Sites with ASP.NET

看一看并选择适合您需求的建筑选项!