在不同的MVC项目之间共享ActionFilter

时间:2015-11-05 23:50:04

标签: c# asp.net asp.net-mvc asp.net-mvc-5 actionfilterattribute

我必须创建多个Asp .Net MVC项目,并且我想在这些项目之间共享常见的Action Filters(以及其他内容),以避免重复代码。

例如:

using System.Web.Mvc;

namespace CoreMVC
{
    public class CustomHandleErrorAttribute : HandleErrorAttribute
    {
        public CustomHandleErrorAttribute() { /* ... */ }

        public override void OnException(ExceptionContext filterContext) { /* ... */ }
    }
}

我到目前为止所考虑的解决方案是将这个类(和其他类)放在类库项目中,并引用System.Web.MVC 程序集。这样,每个MVC项目都可以引用此程序集并重用它。

这是正确的方法吗?还是有其他更好的解决方案?

1 个答案:

答案 0 :(得分:1)

程序集/类库是在.NET应用程序中共享/重用代码的标准方法,因此这是实现它的一种方法。另一种方法是使用NuGet,它也将包含具有共享代码的程序集。 NuGet的优点是您可以在类库中包含一些其他内容(例如一些引导Powershell脚本,这些脚本对安装NuGet的目标项目执行其他自定义)。 NuGet的另一个巨大优势是,您可以在其中安装多个平台,具体取决于您安装的版本/ .NET平台,以便引用正确的程序集。