从asp.net正确执行javascript代码

时间:2014-06-13 18:45:41

标签: javascript asp.net

我正在尝试从后面的代码中的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;

    }

1 个答案:

答案 0 :(得分:1)

你不能。当您编写<% something %>时,它始终在您的页面创建之前在服务器上呈现。 只有在执行了所有asp标记之后,页面才会被发送到客户端,并且将调用Javascript。

有几种方法可以做你正在尝试的事情,大多数都涉及ajax调用。查看&#34; PageMethods&#34;,这是一种从客户端Javascript调用服务器端静态方法的方法。

http://www.ajaxtutorials.com/quickstart/ajax-tutorial-page-methods-in-asp-net/