我有一个表单(下面是它的一些代码):
@model Discussion
@{
ViewBag.Title = "Edit Discussion";
Layout = "~/Views/Shared/_App.cshtml";
}
@using (Html.BeginForm("Update", "Discussion", FormMethod.Post, new { id = Model.discussionId, @class = "update" }))
{
... rest of the view code
}我的相关控制器的update方法有:
[HttpPost]
[ValidateInput(false)]
public ActionResult Update(FormCollection col, int id = 0)
{
... rest of code
}当提交表单时,我总是得到一个id 0,而不是我从模型中看到的ID,当我调试时,很明显在表单呈现过程中内部正在使用。只是当我提交的时候,它没有正确地传递id。
我在语法方面做错了什么吗?Html.BeginForm中的新{}我猜我不明白当表单被提交时,新的匿名类型是如何匹配到这个id的,正如您所看到的,它是id和类的集合。
发布于 2012-02-18 03:38:51
当您执行表单时,您将设置new {id = Model.discussionId ...}元素的id属性。要使id正确显示,您必须将其作为表单的输入。因此,在表单中,您可以放置一个隐藏的输入元素,如下所示:@Html.Hidden("id", Model.discussionId)
因此,您当前的表单呈现的内容如下:
<form id="theDiscussionId" class="update" action="/Discussion/Update">
... rest of the view code
</form>你需要这样做:
<form class="update" action="/Discussion/Update">
<input type="hidden" name="id" value="theDiscussionId" />
... rest of the view code
</form>https://stackoverflow.com/questions/9334177
复制相似问题