如何解决ASP.NET MVC 删除方法将 Id/模型传递给控制器
将 Razor 页面用于我的视图,我找不到将 Id/有界模型传递给我的控制器的方法。
我用我的模型创建了一个删除模板视图,向我的控制器添加了一个删除操作方法,但我不知道如何传递任何参数。
@model AdventureWorks.Models.HumanResources.Department
@{
ViewBag.Title = "Delete";
}
<h2>Delete</h2>
@using (Html.BeginForm("DeleteConfirmed","Department",FormMethod.Post))
{
@Html.AntiForgeryToken()
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>Department</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.displayNameFor(model => model.Name)
</dt>
<dd>
@Html.displayFor(model => model.Name)
</dd>
<dt>
@Html.displayNameFor(model => model.GroupName)
</dt>
<dd>
@Html.displayFor(model => model.GroupName)
</dd>
<dt>
@Html.displayNameFor(model => model.ModifiedDate)
</dt>
<dd>
@Html.displayFor(model => model.ModifiedDate)
</dd>
</dl>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Delete" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List","Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
控制器
public ActionResult DeleteConfirmed(Department department)
{
return ViewDepartments();
}
返回的 Department 对象是一个没有设置属性的新对象。
您能否建议我,如何至少传递要删除对象的 ID? 我设法在我的创建和更新方法中使用表单获取模型,但我不知道如何在删除时执行相同的操作。
解决方法
你可以在Html.BeginForm中添加你想要传递的参数。这里是一个演示:
@using (Html.BeginForm("DeleteConfirmed","Department",new { Id=Model.Id},FormMethod.Post))
{
...
}
结果:
并且您不需要添加 @Html.AntiForgeryToken()
,因为您的表单方法是 post。
DisplayFor 不会做模型绑定。
假设Id是Department的一个键,添加
@Html.HiddenFor(model => model.Id)
在 Html.BeginForm 内部。
在你的删除操作中使用department.Id来查找和删除项目。
,您必须向控制器传递一些值。
@using (Html.BeginForm("DeleteConfirmed",FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.Id) // Use valid expression for id property
...
}
并将 DeleteConfirm 方法的签名更改为
public ActionResult DeleteConfirmed(int id) // Use valid id property type
{
// Delete object
}
这应该可以解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。