2014-06-17 87 views
0

我有一個名爲MyForm.aspx的aspx窗體。在這種形式我已經包含的JavaScript文件:從aspx.cs獲取變量

<script type="text/javascript" src="Scripts/MyForm.js"></script> 

在MyForm.aspx.cs一個有一個屬性:

public string Username { get; set; } 

我怎樣才能在MyForm.js訪問此Username變量?

我試圖通過以下方式,但它不工作: var username = '<%=this.Username%>'

+1

什麼是不工作? 'UserName'屬性在使用時有一個值嗎? –

+0

是的。如果我在.ascx中編寫腳本,它正在工作,但是在這個.js文件中它沒有。 JavaScript中的用戶名將具有值「<%= this.Username%>」。 – ChocapicSz

+0

javascript文件如何與您的代碼文件相關聯以及它的屬性如何? –

回答

0

由於服務器標籤不是其規範的一部分,JavaScript引擎將無法解析服務器<%= this.Username%>代碼。這些服務器括號只能在ASP.NET引擎的aspx/ascx文件中解析。

您可以創建在接受作爲參數的用戶名外地getUserName(用戶名)的ID {返回用戶名;}的MyForm.js文件中的函數從這樣的MyForm.aspx頁面並調用函數:

[MyForm.aspx]

var username = '<%=this.Username%>'; 
getUserName(userName); 

[MyForm.js]

getUserName(userName) 
{ 
    return userName; 
} 
+0

你的答案有點不對但是我編輯,它工作在MyForm.ascx我寫的方法: '' 在MyForm.js中,我將它稱爲:'getUserName()'。 但是,非常感謝您的幫助!:) – ChocapicSz

1

調用來自服務器端一般處理程序文件的JavaScript:

<script type="text/javascript" src="cogs/awesomejavascript.ashx"></script> 

輸出都從處理程序文件中的javascript:

public void ProcessRequest (HttpContext ctx) 
{ 
     ctx.Response.ContentType = "text/plain"; 
     StringBuilder bild = New StringBuilder; 
     bild.Append("var username = " + this.username); 
     ctx.Response.Write(bild.ToString); 

} 

如果您對處理程序文件不滿意,可以使用ascx文件。

+0

Doh!謝謝帕特里克,編輯但看起來像OP有他的答案 – sanepete

+0

是啊對於MVC這是一個體面的答案你的文件處理程序的想法是好的+1 –