c# - Post 敲除数组到 IEnumerable 对象
c# - Post knockout array to an IEnumerable object
我真的很菜鸟。
我正在使用 knockout 将数据从前端保存到后端。我想要做的是将一个敲除数组保存到 c#
中的 IEnumerable 对象
public class VDenuncia
{
public int IdDenuncia { get; set; }
public string Name{ get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public IEnumerable<VFiles> Files { get; set; }
}
如下图所示,这是我的模型
public class VFiles
{
public int IdFile { get; set; }
public byte[] File { get; set; }
public string Extension { get; set; }
}
这是文件的模型。
首先我将文件保存到 DB 和 return 插入的 ID,我想将该 ID 保存在 VDenuncia 中,但不知道如何开发它。
我正在使用 ajax 将 JS 转到 C#,但是当将 observableArray 转换为 IEnumerable 时,在 C# 中没有获得任何对象
$.ajax({
type: 'POST',
url: 'Home/Save',
data: { denuncia: data },
async: true,
success: function (data) {
从 HomeController 保存操作
[HttpPost]
public async Task<JsonResult> Save(VDenuncia denuncia)
{
var manager = new DenunciaManager();
var result = await manager.SaveDenuncia(denuncia);
return new JsonResult
{
Data = result.Folio,
MaxJsonLength = int.MaxValue,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
这是数据的价值。
var data = {
Name: self.Name(),
LastName: self.LastName(),
FirstName: self.FirstName(),
Files: ({
IdFile: self.IdFile(),
File: self.File(),
Extension: self.Extension(),
})
};
解决方案:
给出的解决方案有效,但我意识到我正在使用数组并且我只更改了接下来的数据:
Files: [{
IdFile: self.IdFile(),
File: self.File(),
Extension: self.Extension(),
}]
您应该解开对象中的可观察对象,然后将您的 javascript 对象字符串化为 JSON。
使用 ko.mapping 模块像这样轻松解开你的 javascript 对象:
var payload = ko.mapping.toJS(data); //unwrap your observables
然后在您的 ajax 请求中将类型设置为 json,并使用 JSON.stringify(payload)
将 payload
转换为 JSON,如下所示:
var ajaxOptions = {
url: 'Home/Save',
data: JSON.stringify(payload),
type: "POST",
dataType: "json",
};
我真的很菜鸟。 我正在使用 knockout 将数据从前端保存到后端。我想要做的是将一个敲除数组保存到 c#
中的 IEnumerable 对象public class VDenuncia
{
public int IdDenuncia { get; set; }
public string Name{ get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public IEnumerable<VFiles> Files { get; set; }
}
如下图所示,这是我的模型
public class VFiles
{
public int IdFile { get; set; }
public byte[] File { get; set; }
public string Extension { get; set; }
}
这是文件的模型。
首先我将文件保存到 DB 和 return 插入的 ID,我想将该 ID 保存在 VDenuncia 中,但不知道如何开发它。
我正在使用 ajax 将 JS 转到 C#,但是当将 observableArray 转换为 IEnumerable 时,在 C# 中没有获得任何对象
$.ajax({
type: 'POST',
url: 'Home/Save',
data: { denuncia: data },
async: true,
success: function (data) {
从 HomeController 保存操作
[HttpPost]
public async Task<JsonResult> Save(VDenuncia denuncia)
{
var manager = new DenunciaManager();
var result = await manager.SaveDenuncia(denuncia);
return new JsonResult
{
Data = result.Folio,
MaxJsonLength = int.MaxValue,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
这是数据的价值。
var data = {
Name: self.Name(),
LastName: self.LastName(),
FirstName: self.FirstName(),
Files: ({
IdFile: self.IdFile(),
File: self.File(),
Extension: self.Extension(),
})
};
解决方案:
给出的解决方案有效,但我意识到我正在使用数组并且我只更改了接下来的数据:
Files: [{
IdFile: self.IdFile(),
File: self.File(),
Extension: self.Extension(),
}]
您应该解开对象中的可观察对象,然后将您的 javascript 对象字符串化为 JSON。
使用 ko.mapping 模块像这样轻松解开你的 javascript 对象:
var payload = ko.mapping.toJS(data); //unwrap your observables
然后在您的 ajax 请求中将类型设置为 json,并使用 JSON.stringify(payload)
将 payload
转换为 JSON,如下所示:
var ajaxOptions = {
url: 'Home/Save',
data: JSON.stringify(payload),
type: "POST",
dataType: "json",
};