【发布时间】:2016-09-23 03:52:03
【问题描述】:
我的观点:
<form ng-submit="onFormSubmit()">
<div class="form-group">
<label for="Movie_Genre">Genre</label>
@Html.DropDownListFor(m => m.Movie.GenreId, new SelectList(Model.Genres, "Id", "Name"), "Select Genre", new { @class = "form-control", ng_model = "formData.Movie.GenreId" })
@Html.ValidationMessageFor(m => m.Movie.GenreId, "The Genre field is required.")
</div>
<div class="form-group">
<label for="Movie_Stock">Number in Stock</label>
@Html.TextBoxFor(m => m.Movie.Stock, new { @class = "form-control", ng_model = "formData.Movie.Stock" })
@Html.ValidationMessageFor(m => m.Movie.Stock)
</div>
@Html.HiddenFor(m => m.Movie.Id, new { ng_model = "formData.Movie.Id" })
@Html.AntiForgeryToken()
<button type="submit" class="btn btn-primary">Save</button>
</form>
我的 Angular 控制器:
var MoviesAdminEditController = function ($scope, $state, $http) {
$scope.formData = {};
$scope.onFormSubmit = function () {
// $scope.formData.__RequestVerificationToken = angular.element('input[name="__RequestVerificationToken"]').attr('value');
var formData = new FormData(angular.element('form'));
formData.append('__RequestVerificationToken', angular.element('input[name="__RequestVerificationToken"]').attr('value'));
$http({
method: 'POST',
url: '../../Movies/Save',
data: formData,
headers: {
'enctype': 'multipart/form-data'
}
}).then(function successCallback(response) {
alert('worked');
$state.go('moviesAdmin');
}, function errorCallback(response) {
alert('failed');
$state.go('moviesAdmin');
});
}
}
所以我在尝试使用 Angular 从前端将数据发送到后端 .Net 控制器中的 ActionResult 时遇到了很多问题。
-
当我使用 $http 对象发送 $scope.formData(自动加载)时,.Net 无法识别数据,因为它没有被格式化为预期的表单数据。
当我使用 FormData JS 对象时,我收到服务器错误:“无效的 JSON 原语:------WebKitFormBoundaryzFvk65uKpr0Z7LG1。”
如果我对 FormData 对象进行字符串化,我们又回到了第一个问题。
许多其他来源/问题表明,仅将 FormData 对象传递给 ajax 请求应该可以工作 - 没有关于为什么 2. 发生错误的信息。
有人知道为什么会这样吗?
【问题讨论】:
标签: javascript angularjs json ajax asp.net-mvc-4