加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC [HttpGet]控制器注释可选吗?

发布时间:2020-12-16 04:15:15 所属栏目:asp.Net 来源:网络整理
导读:如果我有2个控制器动作: [HttpGet] public ActionResult Login() { //... return View(); } 和 [HttpPost] public ActionResult Login(FormCollection values) { //... return RedirectToAction("Index","Home"); } 似乎Post装饰是必需的(这是有道理的),但H
如果我有2个控制器动作:
[HttpGet]
    public ActionResult Login()
    {
        //...

        return View();
    }

[HttpPost]
    public ActionResult Login(FormCollection values)
    {
        //...

        return RedirectToAction("Index","Home");
    }

似乎Post装饰是必需的(这是有道理的),但HttpGet装饰完全是可选的.无论有没有都可以.除非另有说明,否则MVC似乎将控制器操作默认为HttpGet.

我必须决定是否希望我的代码的未来读者必须自己解决这个问题,或者我是否想要记住在任何地方添加HttpGet以保持一致性.但我的问题不是关于包含明确的装饰是否是一个好的做法,即使它已经违约了.

我的问题是:总是这样我不需要用HttpGet来装饰控制器方法吗?如果我做或没有明确指定,有什么方法可以咬我吗?我已经搜索了这个但是我能找到的所有帖子都描述了为什么你可能想要使用两个注释而不是特别包含HttpGet的原因.

解决方法

您不必明确指定,不.但请注意:

>不在动作上指定动词将意味着该方法同时接受GET和POST.但是,如果有两个操作,则标记为POST的一个将用于POST,另一个将默认用于GET.
>应用HttpGet意味着一个动作只接受GET请求.
>作为GET标记操作可以使其他开发人员更明显地了解您的意图.

Is there some way that this can bite me if I do or do not explicitly specify?

不太可能.我可以想象某种情况可能会出现一些奇怪的行为或因为它没有按预期工作,但这种情况很少见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读