简体   繁体   English

使用AngularJS和Razor绑定值

[英]Bind values with AngularJS and Razor

I'm new to angularjs. 我是angularjs的新手。 Trying to code the Edit functionality of a single person record. 尝试编写单人记录的编辑功能。

<div ng-app="myapp">
        <div class="container">
            <div ng-controller="mycontroller">
                <div class="col-md-12 col-sm-12">

                    @Html.HiddenFor(o=>o.ID, new { @class = "form-control", ng_value="ID" })

                    <div class="form-group">
                        <label>Name</label>
                        @Html.TextBoxFor(o => o.Name, new { @class = "form-control", ng_value="Name" })
                    </div>
                    <div class="form-group">
                        <label>Name</label>
                        @Html.TextBoxFor(o => o.Address, new { @class = "form-control", ng_value="Address" })
                    </div>
                    <div class="form-group">
                        <label>Name</label>
                        @Html.TextBoxFor(o => o.Telephone, new { @class = "form-control", ng_value="Telephone" })
                    </div>

                    <div class="form-group">
                        <input type="button" value="Update" class="btn btn-primary" ng-click="updatedata()" />
                    </div>
                </div>
            </div>
        </div>
    </div> 

  <script>

        var app = angular.module("myapp", []);

        app.controller("mycontroller",function($scope,$http){

            $scope.updatedata = function () {
                alert($scope.Name);
                $http({ method: "post", url: "/Person/Edit", data: { id: $scope.ID, Name: $scope.Name, Address: $scope.Address, Telephone: $scope.Telephone } })
                .success(function () { alert("Success."); });

            }

        })

    </script>

When I click on the update button. 当我点击更新按钮。 $scope doesn't pass values to the server side Edit method. $ scope不会将值传递给服务器端的Edit方法。 all the parameter values are null but actually, values do exist in Textboxes. 所有参数值都为null,但实际上,值在文本框中确实存在。

It looks like a conflict between AngularJS ng_value and the values loaded by Razor. 它看起来像AngularJS ng_value和Razor加载的值之间的冲突。

For Ex: $scope.Name is undifined. 对于Ex:$ scope.Name是unifined。

Instead of having ng-value (one way binding) directive, place ng-model directive over your text-box to enable two way binding like ng_model="Name" . 不要使用ng-value (单向绑定)指令,而是在文本框中放置ng-model指令以启用双向绑定,如ng_model="Name" So any time changes occurs in text-box will reflect those changes in respective ng-model scope variable. 因此,文本框中发生的任何时间更改都会反映相应ng-model范围变量中的更改。

@Html.TextBoxFor(o => o.Telephone, 
   new { @class = "form-control", ng_value="Telephone", ng_model="Name" })

ng_value不会将您的文本框值与范围变量绑定,因为它是单向绑定而不是使用ng_model将模型数据绑定到angularjs控制器范围。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM