2012-06-04 21 views
0

我正在改變javascript的內容。我可以看到它隨查看源而改變。aspx會不會看到由JavaScript做出的更改?

當我嘗試獲取c#函數中的內容後,它仍然具有舊值。

我的猜測是,ASP只是看到它發送客戶端的HTML,並且該JavaScript正在改變客戶端的HTML,其中ASP無法看到?

這是我對如何解釋它的唯一猜測。這是正確的嗎?

謝謝。

+0

你最近怎麼做這個改變?顯示一些代碼 –

+0

也查看html的瀏覽器緩存 –

+1

服務器端無法區分由JavaScript或個人輸入的數據,也不關心。當您執行POST或GET時,更改將以相同的方式反映出來。 – Snuffleupagus

回答

1

是的,你的猜測是正確的!

Javascript只看到客戶端和ASP.NET只看到服務器端。如果您在客戶端進行了一些更改,並且希望服務器端知道該更改,則可以使用AJAX

有關更多信息,請參閱Ajax

在.NET中,您可以使用WebService,Controller或Page來接收ajax調用。

2

ASPX是SERVER SIDE。 Javascript是客戶端。除非你打電話回web服務或類似的東西,否則兩者不會混合。

您的<span>更改僅在客戶端上,服務器不知道它。如果您希望將交互交流回服務器,請將AJAX視爲解決方案。

1

runat="server"添加到您的範圍。這將導致它被視圖狀態拾取,並且新值將在回發期間可用。

編輯:根據jrummel和mikemanne測試,跨度不會回發,即使用runat=server裝飾時。

如果您希望服務器上的值始終可用,那麼我會建議使用輸入(如其他建議)而不是跨度。

+0

不,使用javascript更改跨度值不會更新ViewState,也不會更改跨度值POST。 – jrummell

+1

@ jrummell任何類型的元素都可以標記爲runat服務器,並且在回發期間它將包含在viewstate中,包括跨度。 – jbabey

+0

如果你用JavaScript重新計算ViewState散列,當然,我想你可以。你有任何資源來支持它嗎? – jrummell

3

除非您正在更改支持將值發回服務器,否則您的更改將被丟棄。 <span>不會被髮送到服務器。

但是,如果您更改INPUT的值,那麼服務器將能夠在嵌套頁面提交POST上看到這些新值,前提是它們是runat=server

相關問題