所以我们有 [HttpPost],这是一个可选属性。我知道这会限制调用,因此只能通过 HTTP POST 请求进行调用。我的问题是我为什么要这样做?
想象一下以下情况:
[HttpGet]
public ActionResult Edit(int id) { ... }
[HttpPost]
public ActionResult Edit(MyEditViewModel myEditViewModel) { ... }
这是不可能的,除非ActionMethodSelector属性 http://msdn.microsoft.com/en-us/library/system.web.mvc.actionmethodselectorattribute%28v=vs.108%29.aspx HttpGet
and HttpPost
在哪里使用的。
这使得创建编辑视图变得非常简单。所有操作链接都直接指向控制器。如果视图模型验证为 false,您只需再次弹出到编辑视图。
我会大胆地说,当涉及 ASP.NET MVC 中的 CRUD 事物时,这是最佳实践。
EDIT:
@TheLight 询问视图中需要什么来完成这篇文章。它只是一个带有 POST 方法的表单。
使用 Razor,这看起来像这样。
@using (Html.BeginForm())
{
<input type="text" placeholder="Enter email" name="email" />
<input type="submit" value="Sign Up" />
}
这将呈现以下 HTML:
<form action="/MyController/Edit" method="post">
<input type="text" name="email" placeholder="Enter email">
<input type="submit" value="Sign Up">
</form>
当表单提交时,它将向控制器执行 Http Post 请求。行动与HttpPost
属性将处理该请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)