gpt4 book ai didi

c# - 来自 ASP.NET MVC Ajax 表单的 HTTP POST 不包含提交按钮

转载 作者:行者123 更新时间:2023-11-30 17:24:06 24 4
gpt4 key购买 nike

我无法确定在 ASP.NET MVC 中的 Ajax 表单 POST 期间单击了哪个表单提交按钮。我有一个基本上看起来像这样的表格:

    <% using (Ajax.BeginForm("Edit",
new { code = Model.Code },
new AjaxOptions() {
UpdateTargetId = "resultsDiv"
})) {%>
<p>
<%= Html.TextBox("Name", Model.Name)%>

<input id="submitButton1" name="submitAction" class="ajaxSubmitButton"
type="submit" value="Button 1" />
<input id="submitButton2" name="submitAction" class="ajaxSubmitButton"
type="submit" value="Button 2" />

<input id="testHiddenValue" name="testHiddenValue"
type="hidden" value="hello world!" />
</p>

<% } %>

在标准 HTTP POST(即禁用 JavaScript)之后,我可以访问以下 POST 变量:

  • 姓名=任意
  • submitAction = 按钮 1
  • testHiddenValue = Hello World !

但是,在启用 JavaScript 的情况下单击该按钮不包括 submitAction 值。我已经通过使用 Fiddler 检查 POST 来验证这一点.

我的预感是 Microsoft Ajax 库不会序列化提交按钮的值。无论如何,我怎样才能解决这个问题,让我的 Controller 知道点击了哪个按钮?


编辑:是的,它看起来像是 Microsoft Ajax 库中的错误(见下文)。为了解决这个问题,我基本上添加了以下 jQuery 代码:

$(document).ready(function() {           
$("#formId .ajaxSubmitButton").live("click", function() {
$("#testHiddenValue").attr("value", $(this).attr("value"));
});
});

然后在我的 Controller 中,如果 Request.IsAjaxRequest() == true,我可以检查#testHiddenValue 的值。否则,我可以查看 Request.Form["submitAction"] 并从那里确定正确的操作过程。

相当笨拙,但我真的看不到替代品。

最佳答案

See here .看起来这是一个错误。就个人而言,我会研究将您希望了解的按钮名称注入(inject)隐藏的表单字段作为临时修复。

关于c# - 来自 ASP.NET MVC Ajax 表单的 HTTP POST 不包含提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com