2011-04-25 80 views
1

我對ASP.NET並不是很熟悉,所以如果我把這個問題說得很差,請原諒我。我們構建了大量的.aspx頁面,其中包含在瀏覽器中查看時呈現爲純文本的動態「標籤」。例如,如果我的.aspx的源包含此代碼:是否可以使用JavaScript插入呈現的ASP.NET控件?

<p>Thanks for trying <em>{ProductName}</em>!</p>

在瀏覽器中查看將讀取時的頁面:

感謝您試用 我公司的產品

現在,我希望能夠通過JavaScript動態地在頁面上插入該文本。問題是,如果我有一個腳本編寫的代碼相同的位到頁面上,我得到這個:

感謝您試用 {ProductName}的

我想這是因爲頁面已經完成渲染腳本運行之前,所以動態標籤被視爲純文本,而不是呈現在服務器端第一。

有沒有什麼辦法可以做到這一點?

+0

ajax可能是一個選項? – 2011-04-25 19:19:30

+0

你從哪裏得到實際的產品名稱?爲什麼當你渲染頁面時它不可用? – musaul 2011-04-25 19:26:47

回答

0

.aspx腳本是服務器端呈現的,所以它們會呈現在您的Web服務器上,然後由用戶下載,因此用戶已經獲得了具有該值的頁面。 另一方面,javascript在客戶端機器上呈現,所以他下載腳本,然後瀏覽器呈現頁面,這就是爲什麼你沒有獲得該值顯示。

有一些解決方法可以做到這一點。

首先,最好的嘗試是阿賈克斯。這意味着,JavaScript將執行另一個服務器請求來獲取該值並將其顯示給用戶,並且該值將來自服務器。

其次,您可以嘗試將這些服務器變量放在腳本變量或隱藏的html元素上。這樣,當你想使用這個值時,你可以從本地腳本中獲取它(javascript)。它會像一個隱藏的或隱藏的輸入書面方式值「>,並恢復它像 document.getElementById("value_id").innerHTML,甚至在你的頁面中設置的JavaScript變量,做這樣的事情

VAR VAL =」 <%=產品名稱%> 「

0

我不熟悉的語法,我希望像<%= ProductName %>,而不是您正在使用什麼味道ASP.Net的MVC的WebForms星火

由於大括號是不可或缺的。???? JavaScript語言,很可能JavaScript字符串不會被解析爲字符串替換,它需要一個非常強大的解析引擎知道大括號何時表示字符串替換以及何時它們是JavaScript代碼的一部分。如果您可以切換到JavaScript的<%= ProductName %>語法,那可能是最簡單的。如果這不是一個選項或不適合您的情況,請嘗試將這些字符串放在html中,並從JavaScript中提取它們。隱藏的輸入似乎是理想的:

<input type="hidden" id="ProductName" value="{ProductName}" /> 

您可能會發現它在屬性中不起作用。沒事,只是用一個隱藏的範圍:

<span class="hidden" id="ProductName">{ProductName}</span> 

(不要忘記定義一個「隱藏」的CSS類來完成實際隱藏:.hidden { display: none; }

獲取你的字符串用JavaScript:

var productName = document.getElementById("ProductName").value;  // hidden input 
var productName = document.getElementById("ProductName").innerHTML; // hidden span 
+0

這兩個很好的建議,但不幸的是,我不認爲任何一個將在我的個案中工作。我們在大量網站上使用了大量這些標籤。我不能突然改變語法,同樣,爲頁面上的每一個插入一個隱藏的元素也是不切實際的。謝謝,但我會再考慮一下。 – daGUY 2011-04-25 20:12:18

相關問題