微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC 删除方法将 Id/模型传递给控制器​​

如何解决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))
{
    ...
}

结果: enter image description here 并且您不需要添加 @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 举报,一经查实,本站将立刻删除。