簡體   English   中英

使用AngularJS將數據發布到MVC Controller

[英]Posting data to MVC Controller using AngularJS

我有一個帶有2個文本框和一個按鈕的簡單html表單,如下所示:

<div class="container" ng-controller="GetStudentController">
        <div class="form-group" style="padding-bottom:40px;">
            <h2 style="text-align:center;">Index</h2>
            <input id="Text1" class="form-group form-control" ng-model="ime" type="text" />


            <input id="Text1" class="form-group form-control" ng-model="prezime" type="text" />

            <input type="button" style="float:right;" class="form-group btn btn-primary" ng-click="snimi(ime,prezime)" value="Snimi" />
        </div>
</div>

這是我的AngularJS代碼:

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

app.service("GetStudentsService", function ($http) {
    this.getData = function ()
    {
        return $http({
            metod: "GET",
            url: "/Home/GetStudent"
        }).success(function (data) {
            return data;
        }).error(function () {
            alert("error");
            return null;
        });
    }
    this.PostData = function (data)
    {
        $http.post("/Home/SnimiStudenta",data)    
        .success(function () {
            getData();
        }).error(function (response) {
            alert(response);
        });
    }
});
app.controller("GetStudentController", function ($scope, GetStudentsService) {
    $scope.data = null;
    GetStudentsService.getData().then(function (response) {
        $scope.data = response.data;
    });
    $scope.snimi = function (ime, prezime) {
        var data = $.param({
            fName: ime,
            lName: prezime
        });
        GetStudentsService.PostData(data);
    };

});

這是負責將記錄保存到數據庫的操作:

 [HttpPost]
        public void SnimiStudenta(// I would like to pass an Student object here)
        {
            Student s = new Student();
            s.Ime = "1";
            s.Prezime = "2";
            Connection.dc.Students.Add(s);
            Connection.dc.SaveChanges();
        }

我有幾個問題:

  • 如何標記文本框中的值並將其作為Student對象傳遞給我的動作
  • 將新記錄保存到數據庫后,如何綁定表。 如您所見,我正在調用函數getData();。 但是它說是不確定的...

有人可以幫我這個忙嗎?

謝謝!

您必須構建一個與C#類(就屬性名稱而言)相似的js對象(將其用作操作方法的參數),然后發布該js對象

$scope.snimi = function (ime, prezime) {
    var data = { Ime: ime, Prezime: prezime};
    GetStudentsService.PostData(data);
};

還有你的行動方法

[HttpPost]
public void SnimiStudenta(Student s)
{
    Connection.dc.Students.Add(s);
    Connection.dc.SaveChanges();
}

至於為什么在調用getData()時出現“未定義”錯誤,這不是因為getData是未定義的,而是因為getData返回僅包含數據而不是整個響應的promise。 所以改變:

 GetStudentsService.getData().then(function (response) {
        $scope.data = response.data;
 });

至:

GetStudentsService.getData().then(function (data) {
        $scope.data = data;
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM