[英]Calling JavaScript function from code beind (c#) catch block
我试图从catch块后面的ascx控制代码调用JavaScript函数。 我尝试了以下两种方法,但它们似乎没有用。
Page.ClientScript.RegisterClientScriptBlock(typeof(string), "script", "test();", true);
ScriptManager.RegisterStartupScript(Page, GetType(), "err_msg", "alert('error');", true);
如果将代码放置在“ PageLoad”下,则会调用该函数,但是将其放置在catch块中时不会调用该函数。我应该做些什么来从catch块中调用JavaScript函数。 请提出建议。
谢谢
你有尝试过吗?
Page.ClientScript.RegisterStartupScript(typeof(string), "script", "test();", true);
如果这相当于问题中的ScriptManager选项,我就想不起来了。
另外,您还需要确保传递的“脚本密钥”值是唯一的,否则asp.net将丢弃具有相同密钥的已注册脚本的第一个实例以外的所有实例。
Javascript不喜欢所有特殊字符和NewLine(\\ r \\ n)字符。 替换所有这些,它将起作用。
例:
string test = msgError.Replace("'", "");
test = Server.HtmlEncode(test).Replace(Environment.NewLine, "<br />");
Page.ClientScript.RegisterStartupScript(
typeof(string),
"MyKeyCatch",
//script,
"showErrorMessage('"+test+"');",
true);
可能想尝试一下:.cs
public String ScriptToRun = "test();";
的.aspx
$(document).ready(function() {<%=ScriptToRun %>}); //or you can register event to document mannually
请记住,您在后端所做的任何事情都会生成HTML,CSS和JavaScript到浏览器。
更新:我尝试下面的代码,它适用于我的情况。 您能否提供更多细节? 的.cs
public String script = "";
protected void Page_Load(object sender, EventArgs e)
{
throwExcep();
}
private void throwExcep()
{
try
{
throw new NotImplementedException();
}
catch (Exception e)
{
script = "console.log('exception throws from backend message: ["+e.Message+"]')";
}
}
的.aspx:
<script>
$(document).ready(function(){
<%=script %>
});
</script>
捕获块是什么?它在哪里?
如果执行catch块中的代码,则通常意味着某些操作失败,也许该失败也是JS调用未通过的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.