Site.Mobile.Masterページを完全に無効にしたいとします。私のサイトは応答性があり、モバイルブラウザで同じマスターページを使用したいと思っています。ASP.NET FriendlyURLs mobile.masterページをオフにする
私はASP.NETフレンドリーなURLでこれをどのように行うことができます
おかげ
Site.Mobile.Masterページを完全に無効にしたいとします。私のサイトは応答性があり、モバイルブラウザで同じマスターページを使用したいと思っています。ASP.NET FriendlyURLs mobile.masterページをオフにする
私はASP.NETフレンドリーなURLでこれをどのように行うことができます
おかげ
はSite.Mobile.Masterページを削除し、フレンドリーなURLは、だけではなく、通常のSite.Masterページを使用します。
Site.Mobil.Masterを削除すると、ページが壊れていました。 だから... ...私はちょうどSite.Mobile.Masterに設定好む はないSite.Masterの情報
分離コード= "Site.Master.cs" 継承= "App.SiteMaster"
を設定しました最高のオプション(LOL)、しかし解決!
モバイルマスターページを削除するのは簡単な方法はありません。 Site.Mobile.Master.masterを削除した場合、「ファイル '/Site.Mobile.Master'は存在しません」というエラーが発生しました。
私はこの問題を解決するために、次のコードをSite.Mobile.Master.cs Page_Loadイベントに追加しました。
var AlternateView = "Desktop";
var switchViewRouteName = "AspNet.FriendlyUrls.SwitchView";
var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView, __FriendlyUrls_SwitchViews = true });
url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl);
Response.Redirect(url);
完璧に動作します!ありがとう@tslin –
ありがとうございます。これは実際に動作するように働いた – psj01
実際に、これはフレンドリーURLコードで"The relative virtual path 'Site.Mobile.Master' is not allowed here."
とsite.mobile.master
ブレークへのアクセスを試みた可能Webフォームの現在のバージョンフレンドリーなURL(1.0.2)のバグがあるようです。私はちょうどこれによって燃えた。
はそれを修正するために、私はhttp://www.davidwilhelmsson.com/disabling-mobile-master-pages-with-asp-net-friendly-urls/で、コードの修正バージョンを使用 - 第1レゾルバクラス作っ:その後、
/// <summary>
/// This is a hack to force no mobile URL resolution in FriendlyUrls. There's some kind of bug in the current version that
/// causes it to do an internal failed resolve of a mobile master even though there is none.
/// </summary>
public class BugFixFriendlyUrlResolver: Microsoft.AspNet.FriendlyUrls.Resolvers.WebFormsFriendlyUrlResolver {
protected override bool TrySetMobileMasterPage(HttpContextBase httpContext, Page page, string mobileSuffix) {
return false;
//return base.TrySetMobileMasterPage(httpContext, page, mobileSuffix);
}
}
を私RouteConfig
クラスでそれを使用:ここで
public static void RegisterRoutes(RouteCollection routes) {
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings, new BugFixFriendlyUrlResolver());
}
があります記事私はこの問題を解決するために書いています。ご参照ください。
Iは、以下の変更により、この問題を解決するために管理:
1)I削除mobile.master Iは
をfolowingにViewSwitcher.ascx.csでコードを変更2)
protected void Page_Load(object sender, EventArgs e)
{
CurrentView = "Desktop";
AlternateView = "Desktop";
// 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 switch view route is out of sync
this.Visible = false;
return;
}
var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView, __FriendlyUrls_SwitchViews = true });
url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl);
SwitchUrl = url;
}
3)これは、ディレクトリ全体を削除して再公開するまで機能しませんでした。私は、いくつかの特定のファイルを削除すると同様に役立つかもしれないと思います。しかし、私はそのような環境を持っていなかったので、私はより簡単に行きました。
デフォルトで保存されているリダイレクトを「ViewSwitcher.ascx」の「Page_Load」イベントの最後に追加するだけで解決しました。 レスポンス。リダイレクト(URL)で だから、サブ結果:
保護されたサブをPage_Load(オブジェクトとして送信者、EventArgsのようE) 「Determinar・ラ・ビスタ実際 薄暗いisMobile = WebFormsFriendlyUrlResolver.IsMobileView(新HttpContextWrapper(コンテキスト)) CurrentView = IF(isMobile、 "モバイル"、 "デスクトップ")
' Determinar la vista alternativa AlternateView = If(isMobile, "Desktop", "Mobile") ' Create URL de conmutador a partir de la ruta, p. ej. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page Dim switchViewRouteName = "AspNet.FriendlyUrls.SwitchView" Dim switchViewRoute = RouteTable.Routes(switchViewRouteName) If switchViewRoute Is Nothing Then ' Las URL descriptivas no están habilitadas o el nombre de la ruta de la vista del conmutador no está sincronizado Me.Visible = False Return End If Dim url = GetRouteUrl(switchViewRouteName, New With { .view = AlternateView, .__FriendlyUrls_SwitchViews = True }) url += "?ReturnUrl=" & HttpUtility.UrlEncode(Request.RawUrl) SwitchUrl = url **Response.Redirect(url)** End Sub
私はそれが簡単だけ削除(または名前変更)することが分かっSite.Mobile.MasterとViewSwitcher.ascx。これは私のためにうまくいくように思えました。
これは私のために働いた唯一のものです。ばかばかしい。 Site.Mobile.MasterのすべてをSite.Masterファイルに置き換えました。ただし、上記のように更新した行1(<%@ Master .....%>)は例外です。 – Marcus