ASP.NET MVC3路由 - 不同区域的相同URL

时间:2011-04-05 02:24:09

标签: c# asp.net asp.net-mvc-3 routing

我的MVC3项目有一个名为Mobile的区域。以下是从桌面浏览器和移动浏览器访问我的网站时的行为:

  1. 桌面浏览器:URL保留mydomain.com,并且正确显示默认桌面主页。

  2. 移动(iPhone)浏览器:网址更改为mydomain.com/Mobile/Home并正确显示移动主页。

  3. 无论是从桌面浏览器还是移动浏览器查看,我都希望网址保留mydomain.com。我如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

尝试为移动设备使用ActionName过滤器和自定义操作方法选择器。 示例(从“Pro ASP.NET MVC 2”一书中复制,第351页):

- In Controller define 2 function for desktop & iPhone, they have the same ActionName

    [iPhone]
    [ActionName("Index")] 
    public ActionResult Index_iPhone() { /* Logic for iPhones goes here */ }     
    [ActionName("Index")]
    public ActionResult Index_PC() { /* Logic for other devices goes here */ }

- Define [iPhone] action method selector:           
    public class iPhoneAttribute : ActionMethodSelectorAttribute 
        { 
            public override bool IsValidForRequest(ControllerContext controllerContext,  
                                                   MethodInfo methodInfo) 
            { 
                var userAgent = controllerContext.HttpContext.Request.UserAgent; 
                return userAgent != null && userAgent.Contains("iPhone"); 
            } 
        }

答案 1 :(得分:0)