Html表单中的简单模型数据绑定

时间:2014-12-05 13:59:47

标签: c# asp.net asp.net-mvc

我正在制作一个小表格,允许用户确认他真的想要删除该项目,但我无法在控制器上获取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>
        }

=&GT;在审计中:

public int Id { get; set; }

HTML

<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参数始终为null。

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

 name="audit.Id"

所以你的行动应该是

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

OR

  

@ DoctorMick的回答。