亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何指示控制器中的方法不是動作方法?

如何指示控制器中的方法不是動作方法?

C#
慕村9548890 2021-04-05 16:17:34
我有一種情況想要使用頁面特定的控制器。在那個控制器中,我有一個動作方法和許多輔助方法。在現實生活中,helper方法是從a繼承的,BaseController但是為了簡單起見,假設我在控制器類中直接有一個helper方法,如下所示:[Route("/dev/test")]public class TestController : Controller {    public IActionResult Get() {        return UnprocessedEntityResult();    }    //Some helper method that I don't want to be considered an     //action method by the routing engine.    public IActionResult UnprocessedEntityResult() {        return StatusCode(StatusCodes.Status422UnprocessableEntity);    }}我特別想使用基于屬性的路由,并且希望在類級別指定該基于屬性的路由。鑒于上述情況,訪問AmbiguousActionException該/dev/test路由時將拋出a ,并表示AmbiguousActionException:多個動作匹配。以下操作與路線數據匹配,并且滿足所有約束條件:App.Dev.TestController.GetApp.Dev.TestController.UnprocessedEntityResult如何告訴路由引擎這UnprocessedEntityResult()不是一種操作方法?我假設必須有一些屬性可以應用到該方法,但是我無法找到它。
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

查找[NonAction]屬性。


指示控制器方法不是動作方法。


[Route("/dev/test")]

public class TestController : Controller {

    [HttpGet]

    public IActionResult Get() {

        return UnprocessedEntityResult();

    }


    [NonAction]

    public IActionResult UnprocessedEntityResult() {

        return StatusCode(StatusCodes.Status422UnprocessableEntity);

    }

}

或者您也可以將該操作設置為受保護的。


[Route("/dev/test")]

public class TestController : Controller {

    [HttpGet]

    public IActionResult Get() {

        return UnprocessedEntityResult();

    }


    protected IActionResult UnprocessedEntityResult() {

        return StatusCode(StatusCodes.Status422UnprocessableEntity);

    }

}

對于派生類型將是可見的,但不會混淆路由表


查看完整回答
反對 回復 2021-04-17
  • 1 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號