我正在尝试使用JSON对象将数据传递到我的Web API。发送单个对象确实可以正常工作但是只要我放第二个参数,第二个对象似乎甚至没有在服务器端初始化?
请查看以下代码,了解我如何处理数据参数
[HttpPost("")]
public JsonResult Post([FromBody]Log_Header headerData,
[FromBody]Log_Detail detailData)
{
return Json("Test");
}
上面的每个类都有简单的字符串数据,例如下面的类:
public class Log_Header
{
public int Id { get; set; }
public string Name{ get; set; }
}
正在发送的数据示例:
var header = {
Id: 0,
Name: "Test 3",
}
var detail = {
Id: 0,
Desc: "Test 1",
}
$http({
method: 'POST',
url: "api/addLog",
data : {
header: header,
detail: detail
}
})
这只是演示数据。
我尝试过几种不同的方式发送数据,例如:
var data = {
Id: 0,
Name: "Test 3",
LogID: 0,
Desc: "Test",
}
但似乎没有任何结果可以解决这个问题,我猜测我正在错误地设置网络API?
总的来说,问题是[FromBody]Release_Log_Detail detailData
根本没有收到任何数据,当从断点查看对象时,它显示为null
。
如果有任何想法请在下面发表评论或回答。如果您需要我的任何信息,请询问。
答案 0 :(得分:3)
无论我们从angular $ http发布什么,它都会考虑单个对象,所以我们需要在服务器上的单个对象中读取它
我们可以这样做
[HttpPost("")]
public JsonResult Post([FromBody]PostData data)
{
return Json("Test");
}
class PostData
{
public Log_Header LogHeader { get; set; }
public Log_Detail LogDetail { get; set; }
}
角柱
$http({
method: 'POST',
url: "api/addLog",
data : {
LogHeader : header,
LogDetail : detail
}
})
答案 1 :(得分:-1)
在javascript中
class IndexForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(IndexForm, self).__init__(*args, **kwargs)
self.fields['year'].widget.attrs.update({"class": "form-control tosp"})
self.fields['index'].widget.attrs.update({"class": "form-control tosp"})
class IndexUpdateView(UpdateView):
fields = '__all__'
model = Index
form_class = IndexForm
template_name = 'index_form.html'
def get_success_url(self):
return reverse('IndexList')
创建模型
$http({
method: 'POST',
url: "api/addLog",
data : JSON.stringify({
header: header,
detail: detail
})
})
您已创建名称为public class dataViewModel
{
public string[] header{ get; set; }
public string[] detail{ get; set; }
}
且操作名称为api
addLog
希望这会有所帮助