带有Angular Postback的ASP.NET WebForms

时间:2013-10-21 09:40:48

标签: c# javascript asp.net angularjs webforms

我试图在现有的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}}"

如何在服务器端获取所选选项的值?

2 个答案:

答案 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