ASP.Net MVC尝试方法...访问方法'System.Web.Mvc.Controller.View(System.String,System.Object)'失败

时间:2015-10-11 21:37:19

标签: c# asp.net-mvc model-view-controller controller

我正在使用ASP.Net MVC5开发项目,并从试图调用System.Web.Mvc.Controller.View(System.String,System.Object)的控制器方法中获取MethodAccessException。

以下是代码段。

public class SectionBaseController : System.Web.Mvc.Controller
{
  ...
}

public class SectionController<TModel> : SectionBaseController 
{
  ...
}

public class BookController<TModel> : SectionController<TModel>
{
    [System.Web.Http.HttpPost]
    public ActionResult CreateNewBook(string autherName, List<TModel> viewModels)
    {
        // do some work
        var model = someResult;
        return View("BookView", model);
    }
}

BookView.cshtml位于项目的Views / Book文件夹中。

当应用程序执行BookController.CreateNewBook方法时,将抛出System.MethodAccessException行

return View("BookView", model);

错误消息是:

  

尝试方法   'BookController 1.CreateNewBook(System.String,   System.Collections.Generic.List`1)'访问方法   'System.Web.Mvc.Controller.View(System.String,System.Object)'失败。

由于BookController间接继承自System.Web.Mvc.Controller,我无法解决为什么它无法访问在System.Web.Mvc.Controller类中定义为protected internal的View方法。

有一个控制器工厂方法可以解析Unity容器中的Controller实例。

    public class ControllerFactory : System.Web.Mvc.DefaultControllerFactory
    {
        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            return _unityContainer.Resolve(controllerType);
        }
    }

我错过了什么吗?

0 个答案:

没有答案