我有一个我在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()
测试);但最后仍然是后面代码中的空字符串。
答案 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"
。