假设我有一个网站,我在列表中显示博客帖子: 型号:
public class BlogPost
{
public BlogPost()
{
Text = blogtext
image = "http://placehold.it/200x200";
}
public string Id { get; set; }
public string Text { get; set; }
public string image { get; set; }
}
我想在每个博客帖子上添加一个按钮,将其ID传递给控制器(我有一个删除它的方法)。有人可以告诉我如何制作这个按钮吗?
答案 0 :(得分:2)
您创建该按钮的方式如下:
@Html.ActionLink("Delete", "Delete", new { id = model.Id})
@Html.ActionLink
有三个参数(在此用法中):第一个是链接文本,第二个是您要发送链接的操作,第三个是包含您要发送的数据的对象
答案 1 :(得分:2)
查看强>
@using (Html.BeginForm("Delete", "BlogPost"))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.Id)
<button type="submit">Delete</button>
}
<强>控制器强>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(int id)
{
// do stuff
}
注意:我的答案和@ sphanley之间的区别在于行动应该如何回应。如果您使用POST(我的),那么您的操作应立即删除匹配的项目。如果您使用GET(sphanley's),那么您应该提供一个页面进行确认,其表单与我的答案非常相似,只有在发布后才会删除。理由是删除(以及其他任何原子的)只能通过POST(或更具体的动词,如PUT或DELETE)而不是GET发生。
答案 2 :(得分:0)
<input type="button" value="Remove" name="Delete" data-id="@Model.Id" class="RemoveLink"/>
script>
$(document).ready(function () {
$(".RemoveLink").click(function () {
var deleteLink = $(this);
$.post(
'@Url.Action("Delete")',
AddAntiForgeryToken({ id: deleteLink.attr('data-id') }))
.done(function () {
var parentRow = deleteLink.parents("tr:first");
parentRow.fadeOut('fast', function () {
parentRow.remove();
});
});
return false;
});
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();
return data;
};
});
</script>
像这样使用