从不同区域返回视图
Posted
技术标签:
【中文标题】从不同区域返回视图【英文标题】:Return a view from a different area 【发布时间】:2011-04-02 05:14:34 【问题描述】:我的 ASP.NET MVC 2 应用程序分为几个区域。其中一个是主目录中的默认区域,另一个是区域目录中的Account
区域。现在,问题是我需要在这两个区域的控制器中使用相同的视图。
如果它们在同一个区域,我只会return View("ViewName")
,但是我可以做些什么来从我的Account
区域的控制器中的默认区域返回视图?有什么想法吗?
【问题讨论】:
请注意,您可以将此视图粘贴在~/Views/Shared
文件夹中,然后从任何控制器/区域调用return View("ViewName")
。
【参考方案1】:
您可以指定视图的相对位置:
return View("~/Views/YourArea/YourController/YourView.aspx");
但是当一个视图在多个区域之间共享时,我建议您使用~/Views/Shared
文件夹,这样可以更好地实现此目的。
【讨论】:
谢谢达林 - 我会试试这个。【参考方案2】:这是一个老问题,但我认为在 MVC 中仍然是一个相关问题,所以这是我如何以 DRY 方式解决它,让您轻松更改服务器路径,并自动更新所有相关操作:
public class FooController : Controller
private ActionResult FooView(string name, string extension = "cshtml")
return View("~/Areas/Bar/Views/Foo/" + name + "." + extension);
public ActionResult SomeAction()
return FooView("AreaSpecificViewName");
public ActionResult SomeOtherAction()
return FooView("AnotherAreaSpecificViewName", "aspx");
这很简洁,因为它默认为 Razor (.cshtml
) 查看文件,但可以通过提供第二个参数来明确设置,如 SomeOtherAction()
所示。
它简单但方便,尤其是在开发过程中,当您的区域路径可能发生变化时。
希望对某人有所帮助。
【讨论】:
以上是关于从不同区域返回视图的主要内容,如果未能解决你的问题,请参考以下文章
iOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation
UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图