如何从C#调用Jquery函数

我想在执行一些代码后淡出和删除div。 使用按钮的onclientclick属性时,此JQuery函数正常工作。 但是,无法从c#中调用它。

JS:

function Confirm() { $(".saved").fadeIn(500).fadeOut(500); } 

C#:

 protected void btnsave_click(object sender, Eventargs e) { //some code upd.update(); ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "Confirm", "Confirm();", true); } 

HTML:

      
Record Saved

CSS:

 .saved { position:absolute; background:green; margin:0 auto; width:100px; height:30px; visibility:hidden; } 

C#

 protected void btn_click(object sender, Eventargs e) { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "Confirm();", true); } 

JS:

  

编辑改进代码

C#

 protected void btn_click(object sender, Eventargs e) { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "Confirm();", true); } 

JS:

  

使用异步回发时,很好地理解您可以在客户端实际处理的事件(aspx文件)。

如果你想在异步回发后执行一些客户端函数(jquery,javascript),我建议在客户端使用pageLoaded事件。 所以你的javascript将如下所示:

 function pageLoad(sender, args) { $(".saved").fadeIn(500).fadeOut(500); } 

有关更多信息,请参阅“常见方案事件顺序”部分中的此 MSDN页面。

希望这可以帮助


在评论后编辑以添加filter示例

要根据引发事件的元素过滤pageLoad事件中的逻辑,如本 MSDN页面中所述,在Animating Panels部分,您可以执行以下操作:

 var postbackElement; function beginRequest(sender, args) { postbackElement = args.get_postBackElement(); } function pageLoaded(sender, args) { if (typeof(postbackElement) === "undefined") { return; } else if (postbackElement.id.toLowerCase().indexOf('btnsave') > -1) { $(".saved").fadeIn(500).fadeOut(500); } } 

试试这个…

 ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "Confirm();", true);