停止每次加载页面时执行C#代码
我的代码隐藏文件中有一个公共字符串,当我准备好使用它时,我打算从javascript调用它。但是,由于它实际上并不与特定事件相关联,因此它只是在每次加载页面时触发。我会将其设置为仅在(IsPostBack)时触发,但我使用的控件(出于许多其他原因)是一个input type=按钮,因此页面永远不会真正进行回发,这意味着代码永远不会触发 我怎么能有这样的东西:停止每次加载页面时执行C#代码,c#,code-behind,delayed-execution,C#,Code Behind,Delayed Execution,我的代码隐藏文件中有一个公共字符串,当我准备好使用它时,我打算从javascript调用它。但是,由于它实际上并不与特定事件相关联,因此它只是在每次加载页面时触发。我会将其设置为仅在(IsPostBack)时触发,但我使用的控件(出于许多其他原因)是一个input type=按钮,因此页面永远不会真正进行回发,这意味着代码永远不会触发 我怎么能有这样的东西: public string dontExecuteYet() { Do some server side stuff Then
public string dontExecuteYet()
{
Do some server side stuff
Then redirect on delay
return string
}
在我的代码隐藏中,直到我告诉它,它才运行?您可以使用页面方法和AJAX这样做 该代码仅在使用javascript调用时执行
实际上,您还可以通过添加onclick=“javascript:uu doPostBack('eventargument','eventvalue');(如果您可以控制它)强制回发输入按钮。对我来说,这是ASP.Net Ajax+WebMethod 参见示例:
如果您最终需要访问代码(假设在初始页面加载之后),您就不能这样做:
if (!Page.IsPostBack)
{
this.MyPublicString = "Hello World!";
}
在JavaScript中:
var publicString = "<%= this.MyPublicString %>";
var publicString=”“;
我同意在这方面可以使用AJAX,但如果不需要异步,只需使用查询字符串,如下所示:
if(Request.QueryString["execute"] == "yes")
{
dontExecuteYet();
}
在javascript中,按下按钮时只需触发以下代码:
window.location = "yoursite.com?execute=yes";
如果按钮没有回发,您将如何告诉服务器何时需要运行代码?问题是页面从未按设计回发。单击按钮时,我正在使用一个web服务,该服务返回一个项目列表,然后保存到本地存储。每当我允许页面也在单击按钮时发回时,web服务总是返回null。我一停止页面发回,一切都正常了。