javascript - ASP.NET RegisterClientScriptBlock、RegisterStartupScript 问题

标签 javascript asp.net

我正在使用母版页开发一组 ASP.NET 应用程序。 当我尝试注册客户端脚本(例如警报框)时,在 Page_Load 中它工作正常。但是,如果我尝试从同一类的任何方法或事件处理程序中执行相同的操作,则不会。 另外,您使用哪种 Register 方法似乎并不重要,两者都只在 Page_Load 中工作(对我来说)。

到目前为止,我找不到另一种方法来提醒用户代码中的异常等(除了构建用户控件),并且我认为在类似的情况下,其他 JavaScript 代码也不会执行...刷新 iframe 内容的示例。

我想知道是否有最佳实践来实现 JavaScript 和后台代码之间更动态的交互?

我的意思是:

  • 可以从代码隐藏中的任何位置调用
  • UpdatePanels 和 MasterPages 不会使其变得不可靠

最佳答案

好吧,这可能不是一个通用标准,但我发现处理这样的错误非常容易:

首先,您需要在母版页中声明一个 ScriptManager

在母版页的代码后面,我声明了我的错误处理函数,如下所示:

public void ShowError(string message){
    ScriptManager.RegisterStartupScript(Page, typeof(Page), "showError", String.Format("ShowError({0});", message), true);
}

我通常会为 ShowError 方法创建一个包含所有可能“覆盖”的接口(interface)。例如,您可能希望以不同的方式处理参数,例如自定义Exception,或者可能只是不同类型的消息(信息、警告、错误)

然后,您可以通过在页面/用户控件中将其声明为全局变量来使用此接口(interface):

#region Globals
    IMaster _master;

好的,下一步是在我们的页面/用户控制文件中声明这个母版页。我通常在页面加载事件中这样做:

protected void Page_Load(object sender, EventArgs e){
    _master = Page.Master as IMaster;
}

在本例中,IMaster 是我之前创建的接口(interface)。

就这样,现在您可以使用在母版页中定义的方法,如下所示:

public void MyMethod(){
    try
    {
        //do something
    }
    catch (Exception ex)
    {
        _master.ShowError(ex);
    }
}

这样您就可以采用标准化且干净的方式来处理应用程序中的错误。

希望这有帮助:)

关于javascript - ASP.NET RegisterClientScriptBlock、RegisterStartupScript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531387/

相关文章:

asp.net - 如何获取数据库删除时间?

c# - Asp.net MVC 绑定(bind)到 View 模型

asp.net - 如何在“ GridView ”列标题上的鼠标悬停时添加工具提示

javascript - 如何检查express/node js中的get方法中是否存在不支持的参数?

javascript - 将 ExtJS 网格绑定(bind)到表单时出现问题

javascript - 通过Js发送时如何隐藏名字

javascript - 叠加悬停效果

c# - aspx页面继承抽象类

ASP.net 下载页面

javascript - 在 Polymer 中将 JSON 数组中的元素附加到 DIV