在MVC中更改视图

时间:2011-10-31 14:20:12

标签: c# asp.net-mvc model-view-controller mobile view

我是MVC的新手。

我需要有两个视图(对于相同的逻辑)一个用于普通浏览器,一个用于移动设备。 我如何才能重定向到Mobile的不同视图?

现在我有两个控制器,但我想只为一个控制器使用一个控制器(HomeController.cs)。 我知道这一点,我应该在“Home”下拥有我的移动视图。 请帮我仅使用一个控制器重定向到移动视图。

我现在使用下面的重定向(有两个控制器):

返回RedirectToAction(“Index”,“Mobile”);

我正在使用框架3.5和MVC 2

3 个答案:

答案 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