0

ASPXエンジン(RAZORではありません!)とSite.Masterをマスターページとして使用しているMVC-4プロジェクトに取り組んでいます。

今の私の仕事は、このサイトをモバイルデバイスで有効にすることです。私が知っているすべての利用可能な情報を見つけた後、私はRazorで次のタスクを実行する必要があります

  1. アプリケーションの起動にDisplayModeProviderを追加します。
  2. _Layout.Phone.cshtmlを作成し、jQueryモバイルサポートを追加します。
  3. Index.Phone.cshtmlのような電話対応のビューを作成し、マスターページとして_Layout.Phone.cshmtlを使用します。

ここで私の質問は、ASPXエンジンを使用してモバイルデバイスのサイトを有効にするにはどうすればよいかということです。

Site.Phone.MasterとIndex.Phone.aspxを作成しましたが、電話ビューではなく、デフォルトのWebページビューのみをレンダリングしています。

4

1 に答える 1

2

モバイルブラウザ用のMasterPageを作成することから始めることができます(~/Views/Shared/Site.Mobile.Master):

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    This is the mobile master page

    <asp:ContentPlaceHolder ID="MainContent" runat="server" />
</body>
</html>

次に、このマスターページを使用するモバイルビュー(~/Views/Home/Index.Mobile.aspx)を作成します。

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Mobile.Master" 
    Inherits="System.Web.Mvc.ViewPage" 
%>

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
    This is the mobile view
</asp:Content>

Application_Startさて、あとは:に表示モードを挿入するだけです。

Func<HttpContextBase, bool> contextCheckDelegate = ctx =>
{
    // Here you could use the ctx variable which represents the HttpContextBase
    // in order to test the UserAgent of the Request and decide whether it is coming
    // from a mobile device or not and return true or false respectively which is what
    // will determine if your .Mobile masterpage and view will be used for this request
    if (IsMobile)
    {
        return true;
    }         
    return false;
};
DefaultDisplayMode mobileMode = new DefaultDisplayMode("Mobile");
mobileMode.ContextCondition = contextCheckDelegate;
DisplayModeProvider.Instance.Modes.Insert(0, mobileMode);

もちろん、iPhone、iPadなどのより具体的なモバイルビューを使用することもできます。この場合、ユーザーエージェントをチェックしているデリゲート内で使用される条件を調整するだけで済みます。

于 2013-02-09T20:42:06.173 に答える