无法放入简单的字符串数据 Web API 的 AngularJS

我正在努力获得一个字符串 json 来自我的应用程序 angular 在 Web API. 最后的 6 我在互联网上寻找几个小时,试图明白我做错了什么。

我检查了网络控制台并查看 json 因为这些形式,但我的 WEB api 出于某种原因 NOT. 我看过几个其他帖子,但他们都没有一个似乎帮助我解决了特殊问题。 任何方向都会很棒。 我已经尝试使用纠正 "transform", 但它没有帮助。

入境点B. WEB API


[HttpPost]
[Route/"api/SkeltaInterfaceController/SaveWorkflow"/]
public bool SaveWorkflow/[FromBody] string json/
{
...
}


ANGULAR 称呼


$scope.SaveWorkFlow = function // {
$http/{
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
method: "POST",
url: webAPI,
data: {'DATA' : 'TEST DATA'
}
}/
}


EDIT: 一世

改变了电话 angular 就此而言


$scope.SaveWorkFlow = function // {
$http/{
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
method: "POST",
url: webAPI,
data: {'DATA' : 'TEST DATA'}
}/
}


Web API 看起来像那样


[HttpPost]
[Route/"api/SkeltaInterfaceController/SaveWorkflow"/]
public bool SaveWorkflow/[FromBody] TestModel json/
{
...
}


一个模型


public class TestModel
{
public string DATA { get; set; }
}


但是,我仍然得到了价值 null 为了 DATA, 什么 - 我配置了错误吗?
已邀请:

知食

赞同来自:

虽然您有解决方案,但有几种方法可以转移

简单的

数据
POST


string

/不是对象/




Web API

.

假设你有 POST API, 像这样 /在测试中 ApiController/


public void Post/[FromBody]string value/
{
//do something with value
}



AngularJS

您可以如下发布此方法。

/1/

数据为
JSON

/默认/


$scope.Test = function // {
$http/{
method: "POST",
url: "/api/Test",
data: JSON.stringify/"test"/
}/;
};


将使用默认值
Content-Type: application/json

. 并且服务器将处理数据 JSON. 如果您查看请求,您将看到查询正文是一个简单的行,例如


"test"


对于复杂的对象,您将以格式查看它们 JSON.

/2/

数据为
application/x-www-form-urlencoded

/如你的例子一样/


$scope.Test = function // {
$http/{
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
method: "POST",
url: "/api/Test",
data: $.param/{ "": "test" }/,
}/;
};


在这里,我们明确指定内容的类型
application/x-www-form-urlencoded

, 因此,我们必须以此格式发送数据。 /与查询字符串非常相似 url/. 和这里

空白钥匙

在数据中

只需满足模型约束的奇怪要求
Web API

!

所获得的数据将被编码如下。


=test


我们用了什么
$.param/{ "": "test" }/

. 其中一个原因是 , 什么
FromBody

主要用于发送
object

, 而不是简单的原始值。

如此基础

问题

使用您的代码包括您所示的内容

内容类型 : application/x-www-form-urlencoded

并将数据发送为

JSON!

喜特乐

赞同来自:

我认为你的问题归结为控制器方法 WebApi, 等待收到一个字符串,但是你把它传递给它。 这至少是进入方法,而是接受 null?

这取决于您尝试发送控制器方法的内容 WebApi, 但如果要发送对象,则必须在项目中创建表示此对象的模型 WebApi, 并使接受对象作为参数的方法。

例如,你现在如何做到,你会这样做 - 那似乎是:


public class SaveModel 
{
public string DATA {get; set;}
}


[HttpPost]
[Route/"api/SkeltaInterfaceController/SaveWorkflow"/]
public bool SaveWorkflow/[FromBody] SaveModel model/
{ ...

要回复问题请先登录注册