3

ASP.NET MVCでは、Controllerから継承するControllerBaseクラスを作成できます。次に、すべてのコントローラーにControllerBaseから継承させることができます。すべてのコントローラーに特定の属性を受信させたい場合は、それをControllerBaseに追加するだけで、設定が完了します。

私はWebAPIとApiControllerで同じことをしようとしています。属性で装飾されたベースApiControllerBaseクラスを作成し、すべてのApiControllerでApiControllerBaseから継承します。これは機能していないようです。

BaseControllerから受け取っている属性からの動作を示す標準のMVCコントローラーがあります。また、ApiControllerクラスを自分の属性で特別に装飾することはできますが、ApiControllerBaseクラスを使用しようとすると、機能させることができません。

私が間違っているかもしれないアイデアはありますか?

4

3 に答える 3

3

以下の作品を確認できます。投稿されたコードがないと、問題が何であるか正確にはわかりません。

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);
    }
}
于 2013-02-21T07:05:47.443 に答える
3

MVC 属性は Api コントローラーでは使用できず、その逆も同様であることに注意してください。

System.Web.HttpApi コントローラーには名前空間の属性を使用しSystem.Web.Mvc、通常のコントローラーには名前空間の属性を使用する必要があります。独自の属性を作成する場合は、それらが正しい名前空間から属性を継承していることを確認してください。

于 2013-02-21T07:17:12.950 に答える