我一直在浏览源代码ASP.NET MVC 4
,并发现一些有趣的事情,可能会帮助你。 这只是我的想法,我还没有测试过!
我们必须从内置功能中自定义几件事情。
查找来自不同文件夹的移动视图。
只有当url包含移动时,才能呈现移动版本。
我们必须扩展DefaultDisplayMode
类,以从我们的自定义文件夹中选择移动视图。 DefaultDisplayMode
在System.Web.WebPages
程序集中。 TransformPath
方法的基本实现将virtualPath
从/Views/Home/Index.cshtml
转换为/Views/Home/Index.Mobile.cshtml
。
我们必须重写TransformPath
方法,该方法会将通过的virtualPath
更改为ex。从/Views/Home/Index.cshtml
到/Views/MobileHome/Index.cshtml
。
public class CustomDisplayMode: DefaultDisplayMode
{
// ...
protected override string TransformPath(string virtualPath, string suffix)
{
if (String.IsNullOrEmpty(suffix))
{
return virtualPath;
}
// TO DO: modify the virtual path
// for ex. from /Views/Home/Index.cshtml to /Views/MobileHome/Index.cshtml
return virtualPath;
}
}
我们必须从Application
_Start设置我们CustomDisplayMode
到DisplayModeProvider
。我们可以设置ContextCondition
,以便考虑URL。
DisplayModeProvider.Instance.Modes.Insert(0, new CustomDefaultDisplayMode("Mobile")
{
ContextCondition = (context => context.GetOverriddenBrowser().IsMobileDevice
&& check context.Request.Url contains the Mobile segment)
});
为什么你需要* mobile *和* web *的不同地址? – VJAI 2012-07-25 13:58:02