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 缺少提交按钮值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 为啥提交不了值(当点击Submit按钮的时候也没会刷新,然后文本框里的值就没有了)

使用 FormCollection

在 React 中提交后重定向

处理FormCollection字段的帮助类

具有多个不同提交按钮的 MVC 剃须刀表单?

单击提交按钮后无法重定向到其他页面