我想发送一个post请求,其中请求主体是一个包含两个属性的JSON,其中一个是使用fabricjs生成的画布信息,第二个是项目缩略图的byteArray。问题是,当我发送请求时,我在服务器端收到null
。
var dataURI = this.getDataUrl($rootScope.imageType, $rootScope.imageQuality);
var strImage = dataURI.replace(/^data:image\/[a-z]+;base64,/, "");
var byteArray = covertBase64ToByteArray(strImage);
var data = {
data: {
name: name,
state: canvas.fabric.toJSON(['selectable', 'name']),
zoom: canvas.zoom,
canvasWidth: width,
canvasHeight: height,
},
typeArray: byteArray
};
$http({
method: "POST",
url: _url,
data: JSON.stringify(data),
processData: false,
transformRequest: [],
contentType: 'application/json',
})
.Net中的后端代码
public IHttpActionResult InsertOrUpdateUILayout(long user_Id, long layout_Id, int userLayout_Id, int? layoutType_Id, UserlayoutContentVM data)
{
// back end code here
}
public class UserlayoutContentVM
{
public object data { get; set; }
//public string base64Image { get; set; }
public byte[] typeArray{ get; set; }
}
答案 0 :(得分:0)
将数据发布到后端api时,您需要告诉方法从请求正文中读取数据。
这可以使用FromBody
属性来完成,该属性将正文数据映射到定义模型。
所以将所有属性添加到一个模型
public class UserlayoutContentVM
{
public long user_Id { get; set; }
public long layout_Id { get; set; }
public int userLayout_Id { get; set; }
public int? layoutType_Id { get; set; }
public object data { get; set; }
public byte[] typeArray{ get; set; }
}
然后确保客户端以相同的结构发送所有数据并使用控制器方法中的FromBody属性来读取值
public IHttpActionResult InsertOrUpdateUILayout([FromBody]UserlayoutContentVM data){ }