gpt4 book ai didi

asp.net - 如果设备在 ASP.NET Web 表单应用程序中移动,则更改母版页

转载 作者:行者123 更新时间:2023-12-02 14:58:55 29 4
gpt4 key购买 nike

当您在 Visual Studio 2012 中创建新的 asp.net 项目时,它会添加一个包含以下代码的 ascx:

// Determine current view

var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context));
CurrentView = isMobile ? "Mobile" : "Desktop";

// 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 中创建自定义路由可以轻松实现

This article Scott 的文章帮助我理解了友好的 URL

现在解决您的问题,更改移动设备的母版页。母版页只能在页面的预初始化事件中更改。我不知道此后注入(inject)新母版页的另一种方法,因为我认为为时已晚

当你有很多页面时,钩上这个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其中提到为移动设备构建母版页

关于asp.net - 如果设备在 ASP.NET Web 表单应用程序中移动,则更改母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811651/

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