HTML 形式的简单模型数据绑定

本文关键字:模型 数据绑定 简单 HTML | 更新日期: 2023-09-27 18:33:12

我正在制作一个小表单,允许用户确认他确实想要删除该项目,但我无法在控制器上获取 id...

@using (Html.BeginForm("Delete", "Home", FormMethod.Post))
        {
            @Resources.Audit.Delete_Ask_Confirmation_Text
            @Html.HiddenFor(model => model.audit.id)
            <button type="submit" class="btn btn-warning">
                <i class="glyphicon glyphicon-trash spaceAfterIcon"></i> @Resources.Audit.Delete_Ask_Confirmation_Button
            </button>
        }

=> 在审计中:

public int Id { get; set; }

目录

<div>
    <form action="/Audit/Home/Delete" method="post" novalidate="novalidate">Lore Ipsum
        <input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="audit_Id" name="audit.Id" type="hidden" value="2">
        <button type="submit" class="btn btn-warning">
            <i class="glyphicon glyphicon-trash spaceAfterIcon"></i> Please confirm the delete
        </button>
    </form>
</div>

控制器:

[HttpPost]
        public ActionResult Delete(int id)
        {// always null}

id 参数始终为空。

我尝试将方法签名更改为:

Delete(int audit_Id), 
Delete(int id), 
Delet(string id), 
Delete(string audit_id),
 ...

感谢您的帮助!

HTML 形式的简单模型数据绑定

如果尝试使用表单字段和 Html 帮助程序函数,则需要将模型作为 Delete 控制器方法的参数。 只有 ID 更正确,您可以通过更改表单声明并添加表示其他路由值的对象来确保它被传递:

@using (Html.BeginForm("Delete", "Home", new { id = Model.audit.id }, FormMethod.Post))}

您还可以删除隐藏的输入类型。

MVC 模型绑定按名称会话处理参数。您的隐藏输入名称是

 name="audit.Id"

所以你的行动应该是

public ActionResult Delete(audit model){
    var id = model.id;
}

@DoctorMick的回答。