【发布时间】:2014-10-23 14:13:57
【问题描述】:
我有一个具有相同签名的 GET 和 POST 方法,这会导致编译时错误。
[HttpGet]
public ActionResult MyAction(string myString)
{
// do some stuff
return View();
}
[HttpPost]
public ActionResult MyAction(string myOtherString)
{
// do different stuff
return View();
}
所以我必须在 Get 请求中对 myString 做一些事情,但我必须在 POST 请求中对 myOtherString 做一些其他事情。做一些研究,我看到了以下堆栈溢出答案 - post and get with same method signature
接受的答案是:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Friends()
{
// do some stuff
return View();
}
// Post:
[ActionName("Friends")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Friends_Post()
{
// do some stuff
return View();
}
我的问题确实是 - 在接受的答案中,对“SomeController”、“Friends”的 POST 请求是否仍会导致 Friends_Post 操作被执行?
【问题讨论】:
-
应该可以,你试过了吗?
-
动作在做什么? 方法 的名称应该代表它将完成的工作。在上面的例子中,我可能会使用
GetFriends和UpdateFriend或InsertFriendetc -
是的,它会执行 Friends_Post。
-
@christiandev 提出了一个很好的观点,也许你的控制器应该命名为
FriendsController,而你的方法应该命名为List和Update(如果是这样的话)。 -
我会保持名称不变,但在 get 中构造并返回一个模型,并在 post 中接受一个模型。
标签: c# .net asp.net-mvc asp.net-mvc-4