从不同区域返回视图

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 没有触发 + 从不是父视图的父视图中删除子视图

在 .net core 3.1 中,如何从不记名令牌返回数据?

为啥 uitextfield 在成为第一响应者时从不返回 nil?