FormCollection 缺少提交按钮值 [重复]
Posted
技术标签:
【中文标题】FormCollection 缺少提交按钮值 [重复]【英文标题】:FormCollection missing submit button values [duplicate] 【发布时间】:2013-12-05 05:49:07 【问题描述】:这段代码在某一时刻有效。我不确定是什么破坏了它,但基本上在回发时,我正在寻找 FormsCollection 中是否存在提交按钮键。根据存在,我执行不同的操作。处理此问题的自定义属性受到打击。当我单步执行并查看 FormsCollection 时,除了提交表单的提交按钮之外,我可以看到表单中的所有键/值。
查看通过 Fiddler2 提交的内容,看起来提交按钮与其余值一起发送到服务器。如果我放入一个与我正在寻找的名称相同的隐藏字段(以及硬编码值),我可以成功点击“如果存在”逻辑分支,因为隐藏字段的值已发送到服务器。
这是我的表格:
@using (html.BeginForm("Respond", "AccountInvitations", new id = Model.Invitation.InvitationCode, ReturnUrl = Request.QueryString["ReturnUrl"] ?? string.Empty, FormMethod.Post, new @class = "invitation-details-form"))
<div class="modal-body">
<div class="status-message info">
<i></i>
You have been invited to join <strong>@Model.Invitation.AccountName</strong>.
Create your profile below to join this account.
</div>
@Html.AntiForgeryToken()
@Html.ServerValidationSummary()
@Html.EditorFor(model => model.InvitationResponse, "InvitationResponseDto", "")
</div>
<div class="modal-footer">
<div class="button-container clearfix">
<input type="submit" name="accept" value="Accept Invitation" class="btn btn-secondary" />
<input type="submit" name="decline" value="Decline Invitation" class="btn btn-link cancel" />
</div>
</div>
当我按下任一“接受”或“拒绝”时,FormsCollection 中均未显示(表单已提交,编辑器模板中的所有字段均显示,但提交输入未显示)。
我不想用 javascript 设置隐藏字段值来处理这个问题。
【问题讨论】:
查看如何处理多个提交按钮:***.com/questions/442704/… 这不是重复的。我已经实现了类似的东西来处理多个提交按钮。正如我在问题中指出的那样,提交输入按钮没有随帖子一起提交。我在下面回答了我的问题,但我不能再接受 23 小时。 【参考方案1】:或者你可以使用
<div class="modal-footer">
<div class="button-container clearfix">
@using (Html.BeginForm("Your_ActionResult", "Your_controller", FormMethod.Get/Post))
@Html.AntiForgeryToken()
<input type="submit" name="accept" value="Accept Invitation" class="btn btn-secondary" />
@using (Html.BeginForm("Your_ActionResult", "Your_controller", FormMethod.Get/Post))
@Html.AntiForgeryToken()
<input type="submit" name="decline" value="Decline Invitation" class="btn btn-link cancel" />
</div>
</div>
你必须在你的Controller中指定调用ActionResul方法的提交按钮是
【讨论】:
如果表单中有多个提交输入,它不会传递值?不幸的是,html 的布局方式我无法真正设置它。您将表单移动到页脚中,如果您在我的 OP 中注意到正文包含一个编辑器视图,其中包含几个所需的输入元素。 我已经尝试删除其中一个提交并发布了其中只有一个的表单,但是其中一个提交也没有被传递。 @Mike 您可以在Controller中使用FormCollection并获取键/值。在您的情况下,您的控制器将类似于:dotnetfiddle.net/1tQ6TX 和 html 类似于:dotnetfiddle.net/ORx5e8。抱歉发布链接,我没有看到下面的答案部分。【参考方案2】:哇,这是一个漫长的几个晚上的编码。 This post 引导我找到答案。几周前添加了一个脚本以防止双击某些表单条目。表单提交后立即禁用输入。一个简单的setTimeout()
来延迟禁用就可以了。
【讨论】:
我们发生了同样的事情,你救了我......很多时间! 很高兴一年后它有所帮助!这就是为什么如此伟大:)以上是关于FormCollection 缺少提交按钮值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章