从执行每次页面加载停止C#代码

时间:2011-08-12 22:27:53

标签: c# code-behind delayed-execution

我的代码隐藏文件中有一个公共字符串,当我准备好它时,我打算从javascript调用它。但是,由于它并不真正与特定事件绑定,因此每次页面加载时它都会触发。我将其设置为仅触发if(IsPostBack)但我正在使用的控件(由于许多其他原因)是输入类型=按钮,因此页面从不真正做回发意味着代码永远不会触发。

我如何拥有以下内容:

public string dontExecuteYet()
 {
  Do some server side stuff
  Then redirect on delay
  return string
  }

在我的Code Behind中,直到我告诉它才会运行?

4 个答案:

答案 0 :(得分:0)

您可以使用Page方法和AJAX这样做。

http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm

该代码仅在您使用javascript

调用时执行

...

...

实际上你也可以通过添加onclick =“javascript:__ doPostBack('eventargument','eventvalue')强制在输入按钮上回发;” (如果你对它有控制权)

答案 1 :(得分:0)

答案 2 :(得分:0)

如果你需要访问代码,最终(假设在初始的Page_Load之后),你不能只做这样的事情:

if (!Page.IsPostBack)
{
    this.MyPublicString = "Hello World!";
}

在你的JavaScript中:

var publicString = "<%= this.MyPublicString %>";

答案 3 :(得分:0)

我同意你可以在这里使用AJAX,但是如果你不需要它是异步的,只需使用一个查询字符串,如下所示:

if(Request.QueryString["execute"] == "yes")
{
     dontExecuteYet();
}

并且在javascript中,您只需要在按下按钮时触发此代码:

window.location = "yoursite.com?execute=yes";