Asp.net-Mvc

MVCHttpGetH噸噸pG和噸HttpGet控制器註釋可選?

  • November 25, 2020

如果我有 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 可以讓其他開發人員更清楚您的意圖是什麼。

如果我明確指定或不明確指定,有什麼方法可以咬我嗎?

不太可能。我可以想像這樣一種情況,其中某些東西可能會表現出一些奇怪的行為或因此而無法按預期工作,但這種情況很少見。

引用自:https://stackoverflow.com/questions/22443290