关于Friendly URL和ViewSwitcher的信息似乎很少。
在创建文件Default.Mobile.aspx并为其分配母版页Site.Mobile.master然后运行它之后,总会返回404"未找到"错误。
有什么可能出错的想法吗?和/或有什么好的参考材料吗?我唯一能找到的东西是2012年或更早的。
IIS是7.0版(但VS 2013正在模仿IIS 8.0)。项目是包含MVC的web表单。正在使用引导
谢谢
=============================编辑=========================
我现在已经尝试创建三个独立的项目"开箱即用"
Web | ASP.Net Web应用程序表单,并添加MVC和/或API或纯表单
添加Default.Mobile.aspx文件并将其分配给Site.Mobile.Master-每次运行时我都会遇到相同的404错误
然后,我创建了一个Web窗体项目-Web|Visual Studio 2012|ASP.NET Web窗体应用程序。这样,Default.Mobile.aspx表单将运行并切换到主默认文件,但不会再次切换回。
在所有风格中,View Switcher控件仅显示为"View | Switch to",并且似乎没有加载ViewSwitcher.ascx并显示"x View | Switch toy View"
=====================编辑2014年10月1日=====================
解决了ViewSwitcher.ascx的问题。ViewSwithcher.ascx.vb中的Page_Load事件没有连接-在末尾添加了"Handles MyBase.Load",现在它显示了正确的文本,但仍然无法显示移动视图-叹息
这是完整的Page_Load代码,可以在桌面和移动页面之间切换。它包括处理MyBase.Load和__FriendlyUrls_SwitchViews=真额外参数
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Determine current view
Dim isMobile = WebFormsFriendlyUrlResolver.IsMobileView(New HttpContextWrapper(Context))
CurrentView = If(isMobile, "Mobile", "Desktop")
' Determine alternate view
AlternateView = If(isMobile, "Desktop", "Mobile")
Dim strSwitchViewRouteName As String = "AspNet.FriendlyUrls.SwitchView"
Dim SwitchViewRoute = RouteTable.Routes(strSwitchViewRouteName)
If SwitchViewRoute Is Nothing Then
' Friendly URLs is not enabled or the name of the switch view route is out of sync
Me.Visible = False
Return
End If
' Create switch URL from the route, e.g. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page
Dim url = GetRouteUrl(strSwitchViewRouteName, New With { _
Key .view = AlternateView, .__FriendlyUrls_SwitchViews = True _
})
url += "?ReturnUrl=" & HttpUtility.UrlEncode(Request.RawUrl)
SwitchUrl = url
End Sub
通过将404错误添加到web.config 中解决了此问题
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ScriptCompressionModule" type="Westwind.Web.ScriptCompressionModule,Westwind.Web" />
</modules>
现在只剩下_ViewSwitcher.vbhtml没有开火-越来越近:-)