我试图在现有的ASP.NET WebForms应用程序中使用Angular框架,遇到的问题是:
客户端代码:
<select id="fooSelect" class="span8" runat="server" clientidmode="Static">
<option ng-repeat="foo in foos" value="{{foo.Id}}">{{foo.Title}}</option>
</select>
当表单被提交时(整页回发),
值fooSelect.Value
是"{{foo.Id}}"
如何在服务器端获取所选选项的值?
答案 0 :(得分:6)
您不能将angular用于服务器选择标记。实际上,在回发时在服务器上计算所选的选项值。因此,当您在标记中有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" />
答案 1 :(得分:1)
ASP.Net不适合与AngularJS(以及其他SPA)集成。构建ASP.Net的抽象使得几乎不可能利用Angular的任何功能,例如路由或数据绑定。
ASP.Net动态生成您无法控制的内容。它将生成包含(如span),动态客户端ID以保持数据同步并检测服务器上的更改。
我非常怀疑,如果可以在AngularJS中为ASP.Net生成的内容实现数据绑定。可行的最佳方法是使用input
ng-model
类型绑定,并使用回发在服务器上获取该数据。
我强烈建议您切换到ASP.Net MVC