簡體   English   中英

如何使用 asp.net C# 在頁面加載時綁定 JavaScript 事件

[英]How to bind JavaScript event on page load using asp.net C#

我正在嘗試在 C# 頁面加載時綁定 JavaScript 事件我已經嘗試過這段代碼

Response.Write("<li><a href='#' onclick=BindID('" + SubMenu.ParentId + "','" + SubMenu.FormName + "','" + URL + "','" + SubMenu.FormCaption+ "')>" + newSubMenuItem.Text + "</a></li>");

執行后,在我的 html 頁面(在瀏覽器上)中生成以下輸出。

<a href="#" onclick="BindID('59','Registration','ApplicationForms/CaseManagment/Case.aspx','Copyrights" filing')="">Copyrights Filing</a>

變量SubMenu.FormCaption包含字符串值'Copyrights filing' SubMenu.FormCaption 'Copyrights filing'但當變量包含空格時瀏覽器會添加雙引號,並且該值變為'Copyrights" filing'

代碼有什么問題?

那是因為 onclick 必須看起來像:

 onclick="BindID(...)"

你的看起來像:

 onclick=BindID(...)

所以只需在前后添加引號

Response.Write("<li><a href='#' onclick=\"BindID('" + SubMenu.ParentId + "','" + SubMenu.FormName + "','" + URL + "','" + SubMenu.FormCaption+ "')\">" + newSubMenuItem.Text + "</a></li>");

所以瀏覽器不知道如何准確解析它然后他猜測希望它會起作用

這是因為在 BindID 方法的開頭缺少雙引號。 瀏覽器將 url 之前的雙引號視為 li 元素的結束標記,因此給出了錯誤。

使用 string.format 方法動態生成 html 總是更好。 它易於維護、閱讀和理解。

喜歡

String.Format("<li><a href='#' onclick="BindID('{0}','{1}','{2}','{3}')>{4}</a></li>", SubMenu.ParentId,  SubMenu.FormName, SubMenu.FormCaption,newSubMenuItem.Text);

把我難住了。 我不知道為什么會這樣。

我的回答對您來說更像是一種替代方法:

var markup = String.Format("<li><a href='#' onclick=BindID('{0}','{1}','{2}','{3}')>{4}</a></li>", SubMenu.ParentId,  SubMenu.FormName, SubMenu.FormCaption,newSubMenuItem.Text);
Response.Write(markup);

無論如何,我會根據您的問題的上下文推薦這個(可以提高性能)。

http://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

在頁面加載時,您只能粘貼此代碼。 當頁面將加載 JavaScript 代碼將運行。 將函數名稱更改為您自己的函數。

ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), `"javascript:funclass();", true);`

通過使用瀏覽器的檢查元素功能,您被引導到這里的花園小徑,在這種情況下,我懷疑是 Chrome,它為瀏覽器提供了對格式錯誤的 html 的最佳解釋。 在這種情況下,您應該始終使用查看源來查看原始輸出。 如果你這樣做,你會看到輸出實際上是:

<li><a href='#' onclick=BindID('59','Registration','ApplicationForms/CaseManagment/Case.aspx','Copyrights filing')>Copyrights Filing</a></li>

看看這個,公平地說 Inspect Element - 它可能有助於比較兩者,你應該能夠發現,正如其他人指出的那樣,onclick 屬性的值沒有像它需要的那樣用引號括起來。

您在“檢查元素”視圖中的“版權”歸檔中間看到的引號是瀏覽器在第一個空白處終止 onclick 值,然后將其全部用引號本身包裝起來的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM