我一直在玩ASP.net MVC 4的新显示模式功能,你可以将.Mobile附加到显示页面(Index.Mobile.cshtml),它将为移动设备呈现移动版本.是否可以为不同的用户代理提供不同的控制器?像HomeController.Mobile.cs之类的东西?我试过这个,但它不起作用.编译器希望HomeController.cs和HomeController.Mobile.cs是局部的.
我知道我可以创建一个移动区域并将所有移动流量重定向到该区域,因此移动设备将拥有自己的控制器.但是,我更喜欢像HomeController.Mobile.cs这样的东西,因此它可以提供更清晰的代码库.否则,使用ASP.net 4的显示模式,移动版本和页面的Web版本将具有相同的控制器逻辑,并不总是需要.有关如何做到这一点的任何想法?
文件名对于类没有任何意义,所以我不确定您对"HomeController.Mobile.cs"的想法是什么.你不能有两个同名的HomeController类,所以它可以是单独的控制器/区域/应用程序,也可以是共享的,如你所指出的那样.
如果您使用默认约定并具有相同的控制器,则可以根据设备类型分叉逻辑:
if (HttpContext.GetOverriddenBrowser().IsMobileDevice)
{
//mobile specific logic
}
Run Code Online (Sandbox Code Playgroud)
如果您发现许多控制器/行动取决于设备类型,那么我要说的却是不同的逻辑,你有单独的应用程序,它确实是有意义的使用面积,甚至如果需要一个单独的Web应用程序,恕我直言.我试着根据这个来决定我走的路.
编辑以解决评论:
我明白你想要什么; 当我尝试制作jQuery Mobile版本的博客时,我不得不做类似的事情.基本上,我看到有3个选项:
听起来你不想要#2或#3,所以你考虑过#1?移动设备的瓶颈在于它的资源和网络,所以如果你的服务器必须做"额外"的工作来获取移动视图永远不会呈现的一些数据,我就不会太担心.
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |