2010-10-26 60 views
2

有沒有一種方法來分配/傳遞/複製一個JavaScript變量到C#中的服務器端變量?爲了爭論,我們假設我能夠解析一些JSON以獲得我想要存儲的變量,並將它們分配給客戶端(即var = FirstName和var = 25和var = someDateTime等)。傳遞JavaScript變量到服務器端的C#邏輯

+0

我認爲你需要成爲一個「小」更具體的,我會假設你的意思是阿賈克斯,還是你的意思是json,還是什麼... – dstarh 2010-10-26 14:27:12

+0

@dstarh見上面,做了幾個編輯。這有幫助嗎? – locoboy 2010-10-26 15:07:39

回答

5

JavaScript變量存在於客戶端,所以爲了將這些值存入服務器,您需要執行來自客戶端的請求。您可能需要一種名爲AJAX的方法。 AJAX涉及JavaScript在頁面後臺向服務器發出請求。您將設置一個C#網頁,預計這些後臺請求。如果您使用GET請求,然後將您的AJAX請求的查詢字符串中的變量放置到新的C#頁面。如果您想使用POST請求,那麼您將在發佈到您的頁面的數據中設置參數。

jQuery這樣的庫使這種事情變得非常簡單。

+0

你會如何實現這一點? – locoboy 2010-10-26 19:56:05

+1

@ cfarm54,好吧,作爲一名軟件開發人員,您想要建立起來的偉大技能之一就是能夠爲您自己弄清細節。我會從谷歌搜索AJAX和jQuery等東西開始,以便從根本上理解它們。然後當你遇到特定的死角時,回來問問我們。就目前而言,對於特別具體的答案,恕我直言,這個問題太模糊了。 – 2010-10-27 14:37:54

+0

好的,謝謝戴夫。 – locoboy 2010-10-28 04:48:06

1

有沒有直接方式從您的服務器端代碼訪問客戶端代碼中的變量。

一個簡單的方法,無需編寫處理程序,ajax帖子等,就可以將java腳本變量簡單地存儲在隱藏文本框中,並在您的帖子中檢索它。您也可以回寫到隱藏字段併爲您的腳本提供值,例如

標記

<asp:HiddenField runat="server" Id="JavascriptValue" value="0"> 

腳本

<script> 
    var myValue = <%=JavascriptValue.Value%> 
</script> 

服務器端

protected void Page_Load(object sender, EventArgs e) 
{ 
string val = JavascriptValue.Value; 
} 
+0

'JavascriptValue'控件的ID很少*爲「JavascriptValue」:使用'$ get(<%= JavascriptValue.ClientID%>)。Value;' – Brad 2010-10-26 14:36:55

+0

這似乎是最簡單的,我會試試這個,讓你懂。 – locoboy 2010-10-26 15:09:52

0

寫值到控制(E。 G。 HiddenField)通過JS並閱讀回發。

您可以在Page_Load

if (this.Request.Form["myHiddenField"] == null) { 
    ClientScript.RegisterHiddenField("myHiddenField", ""); } 

從註冊代碼隱藏隱藏字段使用腳本來填充它

ClientScript.RegisterOnSubmitStatement(this.GetType(), 
    MethodBase.GetCurrentMethod().DeclaringType.Name + "_myHiddenField", 
    "var res=document.getElementById('myHiddenField');if(res!=null){res.value='some value';}"); 

和閱讀它回發(也Page_Load

var myValue = (!IsPostBack) 
    ? null 
    : this.Request.Form["myHiddenField"]; 
0

我所做的就是將javaScript變量保存在cookie中然後從C#中讀取它。

JavaScript代碼:

<script> 
$(document).ready(function() { 
    createCookie("height", $(window).height(), "10"); 
}); 

function createCookie(name, value, days) { 
    var expires; 
    if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
    expires = "; expires=" + date.toGMTString(); 
    } else { 
    expires = ""; 
    } 
    document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/"; 
    } 
</script> 

C#代碼:

height of browser:@Request.Cookies["height"].Value; 
相關問題