我必须使用ASP.Net MVC 4在Mobile和Tablet中设计一些页面。我已经通过创建CO控制器和视图为桌面开发了这些页面。
我有不同的移动和桌面布局。我已经在项目中有移动和平板电脑的区域。由于移动/平板电脑与桌面的页面相同,我如何重用为桌面创建的控制器和视图在移动和平板电脑设计?
我在_ViewStart.cshtml中执行了以下操作,但这不起作用。
我在/Controllers/RegisterConrtoller.cs
并在/Views/Register.cshtml
@{
Layout = Request.Browser.IsMobileDevice ? "~/Views/Shared/_MobileLayout.cshtml"
: "~/Views/Shared/_DesktopLayout.cshtml";
}
我的网址指向Mobile/Controller/Register
。它试图从Regions部分获取Register页面,因为它在这里注册:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Mobile_default",
"Mobile/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
我希望不从区域中挑选这个特定的寄存器控制器 请告诉我是否有更好的方法来实现这个目标?
我不确定我是否还要做其他事情?
1)我是否需要为移动设备,平板电脑和桌面创建单独的视图?
2)我是否需要为移动设备,平板电脑和桌面创建相同的视图和控制器?
非常感谢任何帮助。
谢谢,
阚
答案 0 :(得分:0)
Request.Browser.IsMobileDevice要求将浏览器文件包含在服务器上以便检测它们。 .NET附带的文件没有最新的设备,即使您更新它们,您也必须继续更新它们以跟上新兴设备的步伐。
建议您不要扫描特定类型的设备,而是测试特定功能。在这种情况下,您可以使用CSS根据视口的宽度更改布局。无论如何,这很可能是您的应用程序需要进行布局更改的主要因素。
您可以自己编写CSS以进行响应式设计,也可以使用框架。用于开发响应式应用程序的最流行框架是Bootstrap,它本身支持4种不同视口宽度的CSS,允许您逐步使用设备上的可用空间。