AngularJS $http.post ASP.NET 具有简单类型参数的 Web API 控制器
AngularJS $http.post to ASP.NET Web API controller with simple type argument
我有一个简单的测试来尝试理解从AngularJS到 ASP.NET WebAPI的 http.post 美元。帖子设法成功,但 API 上收到的值显示为空。我已经对此进行了测试,并看到$scope对象在发布之前具有值。
我已经检查了各个地方,我看到 WebAPI ASP.NET 以奇怪的方式处理帖子数据。
这是我用于获取输入的HTML代码,基本.html:
<form name="basicItem" novalidate ng-app="app" ng-controller="ItemCtrl">
<label id="titlelabel" class="required">Title</label>
<input ng-model="item.Title" type="text" id="titlefield" name="Title"
required />
这是来自 ItemController.js 的代码,它检查验证和发布(我正在使用 CORS,因为这两个程序都有单独的域(:
app.controller("ItemCtrl", ['$scope', '$http', function ($scope, $http) {
$scope.submitForm = function (form) {
if (form.$valid) { //If Title has some value
item = {
"Title": $scope.item.Title, //Set "Title" to the user input
}
alert($scope.item.Title); //This shows that my value is not null
$http.post("http://localhost:50261",
{
testTitle: $scope.item.Title //!!!Probably the problem, sets
}).success(function (result) { //the parameter of API post
alert('Success!');
}).error(function (data) {
alert("Valid but didn't connect");
console.log(data);
})
这是API控制器EntryController中的代码.cs:
[HttpPost]
public string CreateEntry([FromBody]string testTitle)
{
return testTitle; //returns null!!!
}
我已经读过关于需要 [FromBody] 并且只使用 1 个简单参数的信息。最后,我还看到我应该将我的帖子值括在引号中或给出一个前导"="符号,但这两种方法似乎都不起作用。任何帮助或建议都会很棒。
正如bluetoft所提到的,问题是WebAPI处理序列化有点奇怪。
如果您的控制器接受具有 [FromBody]
属性的基元类型,则它需要在 POST 正文中=value
,而不是 JSON。您可以在此处阅读有关该主题的更多信息。
因此,您的请求应仅包含基元值,如下所示:
$http.post(urlTest, '"' + $scope.item.Title +'"').success(function(result) {
alert('Success!');
}).error(function(data) {
alert("Error!");
});
还要注意双引号是如何连接的,以便子模拟值实际上是"Your Title"
的,而不仅仅是Your Title
,这将使它成为无效的字符串。
.
NET Web API 控制器处理序列化有点奇怪。 您需要先JSON.stringify
数据。 在控制器中尝试此操作:
$http.post("http://localhost:50261",
JSON.stringify({
testTitle: $scope.item.Title
})).success(function (result) { //the parameter of API post
alert('Success!');
}).error(function (data) {
alert("Valid but didn't connect");
console.log(data);
})
相关文章:
- 从查询字符串参数推断出正确的数据类型
- 为什么不'我们在javascript中使用函数参数的数据类型
- 简单的ES6承诺问题-交换解决和拒绝参数
- 如何确保函数/方法参数为certian类型
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- JS:执行'失败;getComputedStyle'在'窗口':参数的类型不是'
- Heroku类型的简单HTML/JS应用程序托管
- 如何在谷歌电子表格脚本中测试范围参数的类型
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- TypeScript-如何定义具有任何类型参数的函数类型
- AngularJS $http.post ASP.NET 具有简单类型参数的 Web API 控制器
- JavaScript 类型参数的有效性
- 获取引导预类型参数
- 错误TS2314:泛型类型'Promise<需要1个类型参数
- RegisterClientScriptInclude:什么是“类型”?参数
- Dojo 1.7 Dojo /on可以接受哪些字符串作为类型参数
- JavaScript's文档.打开支持MIME类型参数
- 流类型:泛型Id<T>具有与传入的类型参数类似约束的类型