我有一个从代码隐藏调用的JavaScript函数,它具有输入参数和返回值。我发现其他人需要类似的功能,并且他们被提供了一个HiddenField作为可能的解决方案。所以,这正是我想要做的 - 使用这样的控件来模拟函数值返回行为。
问题是,一旦客户端点击按钮,我所有的代码隐藏都是该特定字段的先前值。第一次它为null,下次每次都是“true”或“false”(作为字符串),具体取决于客户端选择的内容。 好吧,我不能使用以前的值,它必须是“实时”。
我听说有人提到AJAX是一种在客户端和服务器之间进行通信的方式,但我不知道如何实现该解决方案。
我会根据您的要求提供其他信息。
标记(部分):
<body id="body">
<form id="mainForm" runat="server">
<asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="/jquery-2.1.0.js" />
<asp:ScriptReference Path="/Dialog.js" />
</Scripts>
</asp:ScriptManager>
<asp:HiddenField id="hfData" ClientIDMode="Static" runat="server" />
</form>
</body>
JavaScript的:
function deleteDialog(contact) {
var response = confirm('Are you sure you want to delete the contact ' + contact + '?');
var hiddenField = $('#hfData')[0]; // fetches the element as expected
hiddenField.value = response.toString();
alert(hiddenField.value); // prints correct values
}
代码隐藏:
Address addressDelete = addressService.fetchById(contactDelete.address_id);
string contactFullName = String.Join(" ", contactDelete.first_name, contactDelete.last_name);
Page.ClientScript.RegisterStartupScript(this.GetType(), "delete", "deleteDialog('" + contactFullName + "');", true);
Response.Write(hfData.Value); // I've also tried the Request.Form method but to no avail
contactService.delete(contactDelete);
addressService.delete(addressDelete);
答案 0 :(得分:-1)
试试这个
function deleteDialog(contact) {
var response = (confirm('Are you sure you want to delete the contact ' + contact + '?')) ? true : false;
var hiddenField = $("<%= hfData.ClientID %>").value; // fetches the element as expected
/*hiddenField.value = response.toString();*/
alert(hiddenField); // prints correct values
}
或检查:
alert(document.getElementById("<%=hfData.ClientID%>").value);