我有一个名为Project.Web
的项目,其中包含一个文件夹Mvc
,其中包含一个名为BaseController.cs
的基本控制器。
namespace ProsecVHIPHelper.Web.Mvc
{
/// <summary>
/// A base controller for all controllers
/// </summary>
public abstract class BaseController : Controller
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="applicationContext"></param>
protected BaseController(ApplicationContext applicationContext)
{
if (applicationContext == null) throw new ArgumentNullException("applicationContext");
ApplicationContext = applicationContext;
}
/// <summary>
/// Default constructor
/// </summary>
protected BaseController() : this(ApplicationContext.Current) { }
/// <summary>
/// The application context
/// </summary>
public ApplicationContext ApplicationContext
{
get;
private set;
}
/// <summary>
/// Get the services singleton
/// </summary>
public ServiceContext Services
{
get { return ApplicationContext.Services; }
}
}
}
我的所有其他控制器都将使用此基本控制器。
在我的第二个名为Project.Web.UI
的项目中,我有一个路由配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Ftp", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Project.Web.Mvc" }
);
}
}
我包含基本控制器名称空间。
但是当我使用我的基本控制器创建新控制器时,我总是得到404未找到的异常。
当我使用默认的Controller类时,它可以工作。
首先我的控制器位于Project.Web
项目中名为Controllers
的文件夹中。当我在路由配置中添加此命名空间时,它也不起作用。
然后我将这些控制器(不是基本控制器)移动到我的其他项目Project.Web.UI
,但仍然没有运气。
Project.Web
项目是一个类库,Project.Web.UI
是一个Web项目。
有什么想法吗?
答案 0 :(得分:0)
好的,我找到了解决方案。问题是我使用添加引用添加了System.Web.Mvc
。但是这与我的网络项目中的System.Web.Mvc
版本不同。
删除此引用并在Web项目中添加对dll的引用后,一切都像魅力一样!