[英]Pass C# Values To Javascript
在加載頁面時,我想從服務器端變量向我的javascript函數傳遞一個值。
我似乎無法讓它工作這就是我所擁有的:
Asp.Net
protected void Page_Load(object sender, EventArgs e)
{
string blah="ER432";
}
使用Javascript
<script type="text/javascript">
var JavascriptBlah = '<%=blah%>';
initObject.backg.product_line = JavascriptBlah;
</script>
將其添加到頁面
public string blah { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
blah="ER432";
}
我仍然收到錯誤:CS0103:當前上下文中不存在名稱'blah'
此外,我想嘗試在不使用hdden字段的情況下完成此操作
我相信你的C#變量必須是一個類成員才能做到這一點。 嘗試在類級別聲明它而不是Page_Load()
的局部變量。 一旦page_load完成,它顯然會失去范圍。
public partial class Example : System.Web.UI.Page
{
protected string blah;
protected void Page_Load(object sender, EventArgs e)
{
blah = "ER432";
//....
在這個特殊情況下, blah
是Page_Load
本地,你必須使它成為一個類級別的成員(可能使它成為一個屬性),讓它像那樣暴露。
您可以在html頁面中添加隱藏的輸入:
<input type="hidden" runat='server' id="param1" value="" />
然后在您的代碼后面將它設置為您想要傳遞給.js函數的內容:
param1.value = "myparamvalue"
最后你的javascript函數可以訪問如下:
document.getElementById("param1").value
你應該在班級宣布blah
。
你的string blah
需要是Page
類的公共屬性,而不是Page_Load
的局部變量。 您需要了解范圍界定。
public class MyPage
{
public string blah { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
blah = "ER432";
}
}
我過去所做的是webforms所做的功能 - 創建一個隱藏的字段來存儲客戶端所需的值。 如果您使用的是4.0,則可以將隱藏字段客戶端ID模式設置為靜態,以幫助保持清潔。 基本上,將您的值添加到隱藏字段,然后從javascript您可以獲取值或修改它(如果您想要傳回它),因為它只是一個dom元素。
如果你真的想使用代碼 - 比如一個變量,它需要在類范圍內可訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.