首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionMethod参数每次都为0

ActionMethod参数每次都为0
EN

Stack Overflow用户
提问于 2012-02-18 03:29:25
回答 1查看 35关注 0票数 0

我有一个表单(下面是它的一些代码):

代码语言:javascript
复制
@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方法有:

代码语言:javascript
复制
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Update(FormCollection col, int id = 0)
        {
... rest of code
}

当提交表单时,我总是得到一个id 0,而不是我从模型中看到的ID,当我调试时,很明显在表单呈现过程中内部正在使用。只是当我提交的时候,它没有正确地传递id。

我在语法方面做错了什么吗?Html.BeginForm中的新{}我猜我不明白当表单被提交时,新的匿名类型是如何匹配到这个id的,正如您所看到的,它是id和类的集合。

EN

回答 1

Stack Overflow用户

发布于 2012-02-18 03:38:51

当您执行表单时,您将设置new {id = Model.discussionId ...}元素的id属性。要使id正确显示,您必须将其作为表单的输入。因此,在表单中,您可以放置一个隐藏的输入元素,如下所示:@Html.Hidden("id", Model.discussionId)

因此,您当前的表单呈现的内容如下:

代码语言:javascript
复制
<form id="theDiscussionId" class="update" action="/Discussion/Update">
    ... rest of the view code
</form>

你需要这样做:

代码语言:javascript
复制
<form class="update" action="/Discussion/Update">
    <input type="hidden" name="id" value="theDiscussionId" />
    ... rest of the view code
</form>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9334177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档