我正在尝试使用C#和ASP.Net实现一个RESTful MVC项目,因此我有一个控制器,其方法可以通过请求类型区分,就像这个简单的例子一样:
[HttpGet, ActionName("Instance")]
public ActionResult Get(string id) {
//Get
}
[HttpPut, ActionName("Instance")]
public ActionResult Update(string id, Instance instance) {
//Update
}
[HttpDelete, ActionName("Instance")]
public ActionResult Delete(string id) {
//Delete
}
在视图上,我想显示实例,并有更新和删除按钮,这将调用上面的相应操作。创建这些按钮的最佳方法是什么,以便它们生成具有适当请求类型的请求?
答案 0 :(得分:3)
这应该有所帮助: http://blog.osbornm.com/archive/2009/11/24/overriding-the-http-verb-in-asp.net-mvc-2.aspx
此外,对于DELETE操作(您只需要Id),您可以使用不同的小表单并使用html帮助程序的HttpMethodOverride方法。见http://geekswithblogs.net/michelotti/archive/2010/01/08/implementing-a-delete-link-with-mvc-2-and-httpmethodoverride.aspx
答案 1 :(得分:3)
<%: Html.ActionLink("Get button", "Instance", new { id = "123" }) %>
<% using (Html.BeginForm("Instance", "ControllerName", new { id = "123" }, FormMethod.Post)) %>
<%: Html.HttpMethodOverride(HttpVerbs.Put) %>
<%: Html.TextBoxFor(x => x.Prop1) %>
<%: Html.TextBoxFor(x => x.Prop2) %>
<input type="submit" value="Put button" />
<% } %>
<% using (Html.BeginForm("Instance", "ControllerName", new { id = "123" }, FormMethod.Post)) %>
<%: Html.HttpMethodOverride(HttpVerbs.Delete) %>
<input type="submit" value="Delete button" />
<% } %>