从codebehind调用JavaScript函数
我看过像这样的类似问题的回答,但由于我是ASP.NET的新手,我不确定它们是否适用于我想要做的事情。
我在.aspx页面上有一个按钮,一旦按下,我想它的click事件调用我在MasterPage上的JavaScript函数来显示模态弹出窗口。
我希望click事件也能够更新modalpopup的内容。 这可以通过在modalpopup中放入.aspx标签并从代码隐藏设置文本来实现吗?
这是我的JavaScript modalpopup的代码:
// Demo modal function openModal() { $.modal({ content: 'This is an example of modal window.
' + 'Test text:
' + ' ', title: 'Example modal window', maxWidth: 500, buttons: { 'Open new modal': function (win) { openModal(); }, 'Close': function (win) { win.closeModal(); } } }); }
当前有人点击具有“openModal”onclick事件的链接时会显示此弹出窗口。 但是在.aspx按钮完成回发后如何才能完成它,如何动态更改其文本呢?
我希望能够在我的MasterPage上有一个modalpopup函数,任何其他页面都可以填充内容以显示他们需要的任何消息。
我还想注意,这是在回发上完成的,以防任何基于页面的响应没有被刷新。**
C#:
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { if ((Session("myButtonWasClicked") != null)) { string content = "This is an example of modal window.
"; //make sure to escape any characters that need escaping StringBuilder sb = new StringBuilder(); sb.Append(""); Page page = HttpContext.Current.CurrentHandler; ClientScriptManager cs = page.ClientScript; cs.RegisterClientScriptBlock(typeof(Reports), "modulFunction", sb.ToString, false); Session("myButtonWasClicked") = null; } } } //Don't forget to assign this event to your button protected void btn_Click(object sender, EventArgs e) { Session("myButtonWasClicked") = 1; }
VB.NET:
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If IsPostBack Then If Not IsNothing(Session("myButtonWasClicked")) Then Dim content As String = "This is an example of modal window.
" 'make sure to escape any characters that need escaping Dim sb As New StringBuilder sb.Append("") Dim page As Page = HttpContext.Current.CurrentHandler Dim cs As ClientScriptManager = page.ClientScript cs.RegisterClientScriptBlock(GetType(Reports), "modulFunction", sb.ToString, False) Session("myButtonWasClicked") = Nothing End If End If End Sub Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click Session("myButtonWasClicked") = 1 End Sub
Reports
是您的代码所在的class
或page
的类型。
你的脚本:
尝试以下方法:
Response.Write("");
或者如果您在页面上使用ScriptManager,那么您也可以尝试使用它:
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "CallFunction", "openModal();", true);