2

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

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

4

2 回答 2

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" />
于 2013-10-21T11:07:13.807 回答
1

ASP.Net 不适合与 AngularJS(可能还有其他 SPA)集成。构建 ASP.Net 所针对的抽象使得几乎不可能利用 Angular 的任何功能,例如路由或数据绑定。

ASP.Net 动态生成内容,您没有太多控制权。它将生成包含(如跨度)、动态客户端 ID 和所有以保持数据同步并检测服务器上的更改。

我严重怀疑,是否可以在 AngularJS 中为使用 ASP.Net 生成的内容实现数据绑定。最好的方法是使用回发input类型绑定ng-model并在服务器上获取该数据。

我强烈建议您切换到 ASP.Net MVC

于 2013-10-21T10:24:04.087 回答