【问题标题】: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")

标签: c# asp.net-mvc asp.net-mvc-2 areas


【解决方案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() 所示。

它简单但方便,尤其是在开发过程中,当您的区域路径可能发生变化时。

希望对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 2017-03-25
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多