当你创建一个新的asp.net项目我nvisual studio 2012时,它会用这段代码添加一个ascx:`//确定当前视图 var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context)); CurrentView = isMobile?
var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context));
CurrentView = isMobile? “手机”:“桌面”;
// Determine alternate view AlternateView = isMobile ? "Desktop" : "Mobile"; // Create switch URL from the route, e.g. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page var switchViewRouteName = "AspNet.FriendlyUrls.SwitchView"; var switchViewRoute = RouteTable.Routes[switchViewRouteName]; if (switchViewRoute == null) { // Friendly URLs is not enabled or the name of the swith view route is out of sync this.Visible = false; return; } var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView }); url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl); SwitchUrl = url;`
我真的不理解它,它是如何工作的?这个奇怪的代码是什么?WebFormsFriendlyUrlResolver?我有一个现有的项目,我想知道如果检测到移动浏览器是否可以切换母版页
WebFormsFriendlyUrlResolver是一个获取路由关联的辅助类.如果你想启用友好网址,请使用www.yourdomain.com/myaccount.aspx,可以显示为www.yourdomain.com/Account你不需要使用它(针对你的具体问题),但它是asp.net的一个很酷的功能,并且在RouteTables中创建自定义路由变得容易
Scott通过this article帮我理解了友好的URL
现在针对您的问题,更改移动设备的母版页,母版页只能在页面的pre-init事件中更改.我不知道在那之后注入新的母版页的另一种方法,因为我认为为时已晚
当你有很多页面时,勾搭这个handler to httpcontext
下面是一个伪代码,需要根据您的需要进行改进
void page_PreInit(object sender, EventArgs e) { Page p = this.Context.Handler as Page; if (p != null) { // set master page if(Request.Browser.IsMobileDevice){ p.MasterPageFile = "~/MasterPages/mobile.master"; } else{ p.MasterPageFile = "~/MasterPages/normal.master"; } } }
一旦你想到这一点,请确保你阅读这个解决方案at SO,该解决方案提到为移动设备构建母版页
祝好运