是否可以将ASP.NET区域放在类库中?

时间:2011-03-16 14:36:47

标签: asp.net-mvc

我希望能够在多个MVC项目中的一个MVC项目中重用一个区域。我可以将我的区域放在一个类库中,以后可以在新的MVC项目中重用吗?

谢谢,

2 个答案:

答案 0 :(得分:4)

没有开箱即用。您可以查看使用自定义MVCContrib Portable AreasVirtualPathProvider,以便将区域作为资源嵌入到单独的程序集中。如果您使用的是ASP.NET MVC 3,还可以查看following blog post

要小心,因为这可能是not work if you precompile your web application

答案 1 :(得分:0)

您可以在库中拥有AreaRegistration类和Controllers。 ASP.NET MVC运行时将自动注册它们。

但是视图需要位于以下任何位置:

  • 〜/地区/ [AREANAME] /查看/ [ControllerName] / [VIEWNAME] .cshtml
  • 〜/地区/ [AREANAME] /查看/共享/ [VIEWNAME] .cshtml
  • 〜/查看/ [ControllerName] / [VIEWNAME] .cshtml
  • 〜/查看/共享/ [VIEWNAME] .cshtml

或者您可以通过在注册View Engine时设置它们来自己指定它们:

var viewEngine = new RazorViewEngine {
   AreaViewLocationFormats = new[] { "~/MySharedAreas/{2}/Views/{1}/{0}.cshtml" }
};

2是区域名称,1是控制器名称,0是操作名称。

这取决于目的。如果你只是想重用控制器,这个方法会起作用,但如果你想重用视图,那么你必须使用Dimitri提到的解决方案