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

本文关键字:隐藏 表单 字段 赋值 JQuery net asp webforms | 更新日期: 2023-09-27 17:53:36

我有一个项目,我在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()进行测试);但在后面的代码中仍然以空字符串结束。

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

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

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

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

我真的不明白为什么你不使用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>

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

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

我确信这会解决你的问题

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

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