[英]ASP.NET Web API - using a base class
在ASP.NET MVC中,可以创建一个继承自Controller的ControllerBase类。 然后,您可以让所有控制器继承自ControllerBase,如果您希望所有控制器都接收到某个属性,您只需将其添加到ControllerBase即可进行设置。
我正在尝试使用Web API和ApiController做同样的事情。 我已经创建了一个基本的ApiControllerBase类,它使用一个属性进行修饰,然后我继承了所有ApiControllers上的ApiControllerBase。 这似乎不起作用。
我有标准的MVC控制器展示他们从我的BaseController接收的属性的行为。 而且我能够专门用我的属性装饰一个ApiController类,它可以工作,但是当我尝试使用ApiControllerBase类时,我无法使它工作。
有什么想法我可能会做什么wronge?
我可以确认下面的作品。 如果没有一些已发布的代码,我不确定你的问题究竟是什么。
public class BaseApiController : ApiController
{
public readonly KiaEntities Db = KiaEntities.Get();
}
public class ColorsController : BaseApiController
{
// GET api/colors
[Queryable]
public IEnumerable<ColorViewModel> Get()
{
var colors = Db.Colors;
return Mapper.Map<IEnumerable<ColorViewModel>>(colors);
}
}
请注意,Api控制器不能使用MVC属性,反之亦然。
您必须将System.Web.Http
命名空间中的属性用于Api控制器,并将System.Web.Mvc
命名空间中的属性用于常规控制器。 如果您创建自己的属性,请确保它们从正确的命名空间继承属性。
我相信以下代码段会对您有所帮助。
public class HomeController : BaseController
{
public IHttpActionResult Get()
{
base.InitialiseUserState();
var info = Info;
return Ok(info);
}
}
public class BaseController : ApiController
{
public string Info { get; set; }
public void InitialiseUserState()
{
Info = "test";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.