使用asp.net webforms中的JQuery为隐藏的表单字段赋值

时间:2013-01-16 18:11:30

标签: c# jquery asp.net webforms

我有一个我在webforms中工作的项目,我遇到了一个问题,试图将一个值分配给隐藏的表单字段,然后从后面的代码中访问它;这导致空值。我经常处理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()测试);但最后仍然是后面代码中的空字符串。

5 个答案:

答案 0 :(得分:1)

如果您使用asp:HiddenField控件,则js应如下所示:

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

答案 1 :(得分:0)

我真的不明白为什么你不使用Asp隐藏控件,但即使你仍然想按照我的方式去做,我建议添加名字

<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>

答案 2 :(得分:0)

javaScript应该使用像asp 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 %>', '');
}

答案 3 :(得分:0)

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

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

非常确定这会解决您的问题

答案 4 :(得分:0)

在隐藏字段上添加ClientIDMode="Static"

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