首页 > 解决方案 > C# 将表单从 JavaScript 发布到另一个 .aspx 但在 Params 中没有参数

问题描述

在一个 .aspx 页面中,我使用 JavaScript 填写了许多隐藏的表单字段,然后想将表单发布到另一个 .aspx 页面。它正确提交了表单,但是当我查看表单操作中调用的页面中的 Request.Params["org"] 时,它为空。

<script src="prototype.js"></script>
<script>
function doIt() {
    $('org').value = org_int;
    $('frmCheckout').submit();
}
</script>
...
<form id="frmCheckout" method="post" action="checkout.aspx">
<input type="hidden" value="" id="org" name="org">
<input type="submit" onclick="doIt()" value="Submit">
</form>

$ 是在示例之前引入的原型符号。原型中的 $ 与 document.getElementById('frmCheckout') 相同。

主要编辑 2/1/2021 7:52:寻找解决方案我发现了一些新的信息,但它仍然不起作用。

我发现 PostBackUrl 会将 .aspx 的操作更改为另一个 .aspx 页面。这部分有效。提交时,它调用 Checkout.aspx

<asp:Button ID="Submit" PostBackUrl="Checkout.aspx" runat="server" Text="Submit" />

但数据在 Checkout.aspx 中不可用...... Request.Form(应该有)或 Request.Params 中没有值。
我也试过:

<asp:TextBox runat="server" name="jsonString" id="jsonString" value="js" />

但我得到一个无效的 __VIEWSTATE 我知道我应该改变它,但还没有任何效果。

标签: c#form-submit

解决方案


请改变方法。考虑在表单中添加一个 asp 按钮并为该按钮触发 click 事件;按钮属性需要像 Microsoft Docs How to: Post ASP.NET Web Pages to a different Page 的这个主题:

<script src="prototype.js"></script>
<script>
function doIt() {
    $('#org').value = org_int;
    $('#btnPostBack').click();
}
</script>
...
<form id="frmCheckout" method="post">
<input type="hidden" value="" id="org" name="org">
<input type="button" onclick="doIt()" value="Submit">
<asp:Button ID="btnPostBack" ClientIdMode="Static" PostBackUrl="~/checkout.aspx"  runat="server" Text="Post Form To Another Page" style="display:none;"/>
</form>

注意:我在您的代码中看到 id 的选择器在您的 JS 代码中不包含主题标签前缀...


推荐阅读