2013-10-21 53 views
1

我嘗試使用現有的ASP.NET Web窗體應用程序和問題,我跑進角的框架是這樣的:ASP.NET的WebForms與角回傳

客戶端代碼:

<select id="fooSelect" class="span8" runat="server" clientidmode="Static"> 
<option ng-repeat="foo in foos" value="{{foo.Id}}">{{foo.Title}}</option> 
</select> 

當形式被submited (整頁回發)的fooSelect.Value"{{foo.Id}}"

如何獲得服務器端所選選項的值?

回答

6

不能使用角度爲服務器選擇標籤。實際上,在回發服務器上計算所選的選項值。因此,如果您在標記中使用value="{{partner.Id}}",您就會得到這個值。在我看來,你可以使用普通select元件,而不runat="server"屬性和選擇的ID綁定到隱場,在服務器端進行訪問:

<select ng-model="partner" ng-options="p.Title for p in partners" > 
    <option value="">--Select partner--</option> 
</select> 
<br /> 
<input type="hidden" id="selectedPartnerId" runat="server" ng-value="partner.Id" /> 
+0

這不是最優雅的解決方案,但它的工作原理,我會等待,看看是否有更好的解決方案,如果沒有,將標記爲正確的答案。謝謝 – aron

+0

@Yuriy,如果我需要在使用Js/jQuery的Select元素中注入/修改新值,我使用相同的技術。 更改我使用HADD輸入與runat =服務器,所以我可以讀取服務器端的值。 – pyccki

1

ASP.Net並不適合與AngularJS(也可能是其他SPA)集成。 ASP.Net構建的抽象使得幾乎不可能利用Angular的任何功能,例如路由或數據綁定。

ASP.Net動態生成內容,但您無法控制太多內容。它會生成包含(如跨度),動態客戶端ID全部保持數據同步並檢測服務器上的更改。

我嚴重懷疑,如果一個人可以實現與ASP.Net生成的內容AngularJS數據綁定。可以工作的最好方法是input鍵入與ng-model綁定,並通過回發在服務器上獲取該數據。

我強烈建議您切換到ASP.Net MVC

+4

我很抱歉,但這是無效的回答我的問題,我真的無法切換到MVC我不想使用Angular路由。我需要解決這個問題 – aron

+0

我想說這是對這個問題的有效評論。由於@Chandermani提到的一些項目,他們沒有整合意願。但是,在ASP.NET中,您可以重寫如何將控件呈現給頁面,但該選項非常困難,而且往往會造成更大的傷害。 – Lereveme

+0

您可以使用ASP.NET web API與Angular進行交互。 默認情況下,數據以JSON格式從ASP.NET Web API返回,並且可以從前端的角度或jQuery中使用。 –