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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC [HttpGet]控制器注释可选吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有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?

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

猜你在找的asp.Net相关文章