我正在研究使用ASPX引擎(不是RAZOR!)和Site.Master作为母版页的MVC-4项目。
现在我的任务是为移动设备启用此站点。找到我知道的所有可用信息后,我需要使用Razor进行以下任务
现在我的问题是如何使用ASPX引擎为移动设备启用网站。
我创建了Site.Phone.Master和Index.Phone.aspx,但它只呈现默认网页视图而不是电话视图。
答案 0 :(得分: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,......您只需要调整代理中使用的条件,即检查用户代理。