C# ASP.NET Web API-使用基类

C# ASP.NET Web API-使用基类,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,在ASP.NET MVC中,可以创建从Controller继承的ControllerBase类。然后,您可以让所有控制器从ControllerBase继承,如果您想让所有控制器都接收某个属性,只需将其添加到ControllerBase,即可设置 我正试图用WebAPI和ApiController做同样的事情。我创建了一个基本的ApiControllerBase类,该类用一个属性修饰,然后在所有Apicontroller上从ApiControllerBase继承。这似乎不起作用 我确实有标准的MV

在ASP.NET MVC中,可以创建从Controller继承的ControllerBase类。然后,您可以让所有控制器从ControllerBase继承,如果您想让所有控制器都接收某个属性,只需将其添加到ControllerBase,即可设置

我正试图用WebAPI和ApiController做同样的事情。我创建了一个基本的ApiControllerBase类,该类用一个属性修饰,然后在所有Apicontroller上从ApiControllerBase继承。这似乎不起作用

我确实有标准的MVC控制器,显示它们从我的BaseController接收的属性的行为。我可以用我的属性专门装饰ApicController类,它可以工作,但是当我试图使用ApicController类时,我无法让它工作


你知道我做错了什么吗?

我可以确认下面的工作。我不确定你的问题可能是没有一些张贴代码

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);
    }
}
公共类BaseApiController:ApicController
{
public readonly KiaEntities Db=KiaEntities.Get();
}
公共类颜色控制器:BaseApiController
{
//获取api/颜色
[可查询]
公共IEnumerable Get()
{
var colors=Db.colors;
返回Mapper.Map(颜色);
}
}

请注意,Api控制器不能使用MVC属性,反之亦然


Api控制器必须使用
System.Web.Http
命名空间中的属性,常规控制器必须使用
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";
        }
    }

请你详细说明一下,这似乎不起作用。?提供您尝试过的代码也很好,请记住属性继承是双向的——属性必须标记为可继承;查找属性的代码必须指定它希望看到继承的属性。你是否同时控制了这两个方面?