我正在尝试从后面的代码中的TestConfirmValue()方法获取confirm_value,但是当调用javascript函数callCheckMethod()时,函数的最后一行
在其他任何事情之前调用 alert(“<%= TestConfirmValue()%>”)。因此,首先调用TestConfirmValue()
,confirm_value
始终为null。
如何在调用confirm_value
之前首先从javascript函数设置TestConfirmValue()
?
关于代码背后:
protected override void OnPreRender(EventArgs e)
{
ClientScript.RegisterStartupScript(GetType(), "Javascript", "callCheckMethod();", false);
}
在aspx页面上:
function callCheckMethod() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Are you sure?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
alert("<%= TestConfirmValue() %>");
}
//代码背后
public string TestConfirmValue()
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == null) return null;
if (confirmValue=="Yes")
{
//do something
}
return string.Empty;
}
答案 0 :(得分:1)
你不能。当您编写<% something %>
时,它始终在您的页面创建之前在服务器上呈现。
只有在执行了所有asp标记之后,页面才会被发送到客户端,并且将调用Javascript。
有几种方法可以做你正在尝试的事情,大多数都涉及ajax调用。查看&#34; PageMethods&#34;,这是一种从客户端Javascript调用服务器端静态方法的方法。
http://www.ajaxtutorials.com/quickstart/ajax-tutorial-page-methods-in-asp-net/