gpt4 book ai didi

c# - ASP.NET MVC3 - 如何从另一个 Controller 提供 View()

转载 作者:太空狗 更新时间:2023-10-30 01:10:00 25 4
gpt4 key购买 nike

所以为了完成我在 this 中提出的要求发布我做了以下事情:

    [iPhone]
[ActionName("Index")]
public ActionResult IndexIPhone()
{
return new Test.Areas.Mobile.Controllers.HomeController().Index();
}

[ActionName("Index")]
public ActionResult Index()
{
return View();
}

它仍然提供与此 Controller 中的 Index 操作方法相同的 View 。即使我可以看到它执行 Test.Areas.Mobile.Controllers.HomeController().Index() 操作方法也很好。这里发生了什么?我如何在不更改请求 URL 的情况下从移动区域提供索引 View (如上面引用的原始帖子中所问)?

最佳答案

您有几个选择:

  1. 重定向到您要返回的操作:return RedirectToAction("Action-I-Want")
  2. 按名称返回 View :return View("The-View-I-Want")

请注意,使用第二种方法,您必须将 View 放在“共享”文件夹中,以便所有 Controller 能够找到并返回它。如果您最终将所有 View 放在那里,这可能会变得困惑。

作为旁注:您的工作找不到 View 的原因是因为默认 View 引擎在“属于”当前正在执行的 Controller 上下文的文件夹中查找 View ,而不管您调用的是什么代码。

编辑:

可以将所有“移动” View 分组在同一个文件夹中。在您的 Global.asax(或您设置 ViewEngine 的任何位置)上,只需在 AreaViewLocationFormats 中添加移动 View 的路径。请注意,您仍然必须以不同的方式命名您的观点。

您也可以编写自己的 View 引擎。我会做一些事情,比如检测浏览器,然后提供正确的文件。您可以设置一个约定,例如 View.aspx 和 View.m.aspx。

总之,看一下WebFormViewEngine然后您会找出最适合您的方法。

关于c# - ASP.NET MVC3 - 如何从另一个 Controller 提供 View(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5609584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com