我是MVC的新手。
我需要有两个视图(对于相同的逻辑)一个用于普通浏览器,一个用于移动设备。 我如何才能重定向到Mobile的不同视图?
现在我有两个控制器,但我想只为一个控制器使用一个控制器(HomeController.cs)。 我知道这一点,我应该在“Home”下拥有我的移动视图。 请帮我仅使用一个控制器重定向到移动视图。
我现在使用下面的重定向(有两个控制器):
返回RedirectToAction(“Index”,“Mobile”);
我正在使用框架3.5和MVC 2
答案 0 :(得分:3)
答案 1 :(得分:3)
我在设置你的设置时遇到了一些麻烦。我的猜测是你有当前的设置:
<强>控制器强>
- HomeController.cs
- MobileController.cs
的浏览强>
- 家庭
--Index.aspx
- 移动
--Index.aspx
但你想要:
的控制器强>
- HomeController.cs
的浏览强>
- 家庭
--Index.aspx
- 移动
--Index.aspx
这是对的吗?
Aas人在下面提到它是'那就是MVC的工作原理'之一。 “主页”是您可以访问的位置,但“移动”是特定类型的页面。如果您添加另一个名为“关于”的区域作为新的视图子文件夹,您将在哪里放置您的移动文件夹?什么是移动现在应该处理?如果移动设备不应该复制常规站点,那么它应该有自己的控制器,即使它复制了一些代码(不要忘记你可以创建控制器之外的类,这些类可以完成任何控制器可以调用的工作的冲击力)。
另一方面,如果您想要每个页面的移动版本,则应将它们添加到每个路径的views文件夹下。例如:
<强>控制器强>
- HomeController.cs
的浏览强>
- 家庭
- 移动
- Index.aspx
--Index.aspx
我不确定你在做什么逻辑来弄清楚它们是否在移动平台上,但现在假设它位于HomeController.cs中的某个控制器中,然后你有:
public ActionResult Index() {
if([check for mobile])
{
return View("Mobile/Index");
} else {
return View("Index");
}
答案 2 :(得分:0)
家庭控制器 像
一样创建行动Public ActionResult Index() {
}
和另一项行动(移动)
Public ActionResult Mobile() {
}
单一控制器有很多动作(查看)
控制器 - HomeController.cs 查看 - 家 --Index.chtml - 移动 --Index.chtml