asp.NET视图切换器



关于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没有开火-越来越近:-)

相关内容

最新更新