我正在使用母版页处理一组ASP.NET应用程序。 当我尝试注册一个客户脚本 - 例如一个警告框时,在Page_Load中它可以正常工作。但是,如果我尝试从同一个类的任何方法或事件处理程序执行相同操作,则不会。 此外,您使用哪种Register方法似乎无关紧要,两者都只适用于Page_Load(对我来说)。
到目前为止,我找不到另一种方法来提醒用户有关异常等代码(除了构建用户控件之外),我认为在类似的情况下其他JavaScript代码也不会执行... for示例一个将刷新iframe内容。
我想知道是否有最佳实践可以在JavaScript和代码之间实现更多的动态交互?
我的意思是:
答案 0 :(得分:1)
好吧,这可能不是一个通用的标准,但我发现很容易处理这样的错误:
首先,您需要在母版页中声明ScriptManager
。
在母版页的代码背后,我声明了我的错误处理函数:
public void ShowError(string message){
ScriptManager.RegisterStartupScript(Page, typeof(Page), "showError", String.Format("ShowError({0});", message), true);
}
我通常会为ShowError
方法创建一个包含所有可能“覆盖”的接口。例如,您可能希望以不同的方式处理参数,例如自定义Exception
或者可能只是不同类型的消息(信息,警告,错误)
然后,您可以通过在页面/用户控件中将其声明为全局变量来使用此界面:
#region Globals
IMaster _master;
好的,下一步是在我们的页面/用户控制文件中声明这个母版页。我通常在页面加载事件中这样做:
protected void Page_Load(object sender, EventArgs e){
_master = Page.Master as IMaster;
}
在这种情况下,IMaster
是我之前创建的界面。
现在,您可以使用您在母版页中定义的方法,如下所示:
public void MyMethod(){
try
{
//do something
}
catch (Exception ex)
{
_master.ShowError(ex);
}
}
通过这种方式,您可以采用标准化且简洁的方式来处理应用程序中的错误。
希望这会有所帮助:)