0

我有一个正在使用网络表单进行的项目,我遇到了一个障碍,试图为隐藏的表单字段分配一个值,然后从后面的代码中访问它;这导致空值。我通常在 MVC 应用程序上工作,所以我有点困惑。

这是jQuery:

$('.button-submit').click(function () {
    var foo = 'bar';
    $('#hiddenField').val(foo);
});

这是我的表格:

<form id="form1" runat="server">

    <input type="hidden" id="hiddenField" value="" />

    <asp:Button ID="ButtonSubmit" runat="server" OnClick="ButtonSubmit_Click" Text="Add New"  class="button-submit" />

</form>

这是在后面的代码中:

protected void ButtonSubmit_Click(object sender, EventArgs e)
{
    string hiddenFormValue = Request.Form["hiddenField"];
}

Request.Form["hiddenField"]null。我也试过Request.Params并得到了一个null. 关于如何修复此代码或推荐更好的实现方式的任何想法?我还尝试使用一个asp:HiddenField控件,它正在获取分配的值(用 测试alert($('#hiddenField').val());但在后面的代码中仍然以空字符串结尾。

4

5 回答 5

2

如果你使用asp:HiddenField控制,js应该是这样的:

$('.button-submit').click(function () {
    var foo = 'bar';
    $('#<%=controlID.ClientID%>').val(foo);
});
于 2013-01-16T18:15:10.323 回答
1

javaScript 应该使用像 AV sujested 这样的 aspx 引用

$('.button-submit').click(function () {
var foo = 'bar';
$('#<%=hiddenField.ClientID%>').val(foo);
});

然后就可以直接访问了

protected void ButtonSubmit_Click(object sender, EventArgs e) 
{
    string hiddenFormValue = hiddenField.Value; 
}

尽管这可能不是实现这一目标的最佳方式

也许试试这个:

<form id="form1" runat="server">

    <asp:hiddenfield  id="hiddenField" runnat="server" />

    <asp:Button ID="ButtonSubmit" runat="server" OnClick="javascript:FOO()" Text="Add New"   />

</form>

用脚本

function FOO() {
    var foo = 'bar';
    $('#<%=hiddenFeild.ClientID %>').val(foo);
__doPostBack('<%=form1.ClientID %>', '');
}
于 2013-01-16T18:38:42.007 回答
0

我真的不明白你为什么不使用 Asp hidden controll 但即使你仍然想按照自己的方式做我建议添加名称

<form id="form1" runat="server">

    <input type="hidden" name="hiddenField" id="hiddenField" value="" />

    <asp:Button ID="ButtonSubmit" runat="server" OnClick="ButtonSubmit_Click" Text="Add New"  class="button-submit" />

</form>
于 2013-01-16T18:17:14.530 回答
0

您需要告诉它在服务器上运行才能访问它。您可以很好地访问客户端的值,这就是为什么alert($("#<%=hiddenField.ClientID%>").val());会起作用。如果要读取服务器上的值,则需要在服务器上运行它。

<input type="hidden" id="hiddenField" runat="server" value="" />

很确定这会解决你的问题

于 2013-01-16T18:50:33.897 回答
0

添加ClientIDMode="Static"隐藏字段。

请参阅此链接:https ://stackoverflow.com/a/20903213/175111 。

于 2014-03-03T18:42:49.140 回答