繁体   English   中英

ASP.NET Web API - 使用基类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM