【发布时间】:2019-06-20 04:59:11
【问题描述】:
我通过邮递员传递的数据似乎与控制器方法中的模型不匹配。 我在 .Net 应用程序中实现 web api 端点,以同时处理多个文件上传的保存。用户可以选择多个文件,并且对于每个文件,他可以选择文档类型和日期。记录插入到两个表(父表和子表) 我的示例中的父表是 DOCUMENT 表,子记录存储在 MANAGERSTRATEGY_DOCUMENT 表中。我的 JSON 结构有什么问题吗
视图模型
public class DocumentUploadCreateViewModel
{
public int ManagerStrategyId { get; set; }
public List<DocumentUploadCreateDetailsViewModel> DocumentUploadCreateDetailsViewModel = new List<DocumentUploadCreateDetailsViewModel>();
}
public class DocumentUploadCreateDetailsViewModel
{
public string Name { get; set; }
public int DocumentTypeId { get; set; }
public DateTime? DocumentDate { get; set; }
public byte[] DocumentContent { get; set; }
}
控制器代码
[HttpPost]
[SkipTokenAuthorization]
[Route("api/documentupload/create")]
public IHttpActionResult Create(DocumentUploadCreateViewModel model)
{
var mgrStrategyDocument = new MANAGERSTRATEGY_DOCUMENT();
var mgrDocumentService = GetService<DOCUMENT>();
var mgrStrategyDocumentService = GetService<MANAGERSTRATEGY_DOCUMENT>();
if (model != null)
{
foreach (var obj in model.DocumentUploadCreateDetailsViewModel)
{
var mgrDocument = new DOCUMENT
{
DOCUMENT_TYPE_ID = obj.DocumentTypeId,
DOCUMENT_DATE = obj.DocumentDate,
NAME = obj.Name
};
mgrDocument = mgrDocumentService.Create(mgrDocument);
var mangerStrategyDocumentService = GetService<MANAGERSTRATEGY_DOCUMENT>();
var mgrStrategyDocument1 = new MANAGERSTRATEGY_DOCUMENT()
{
DOCUMENT_ID = mgrDocument.ID,
MANAGERSTRATEGY_ID = model.ManagerStrategyId
};
mgrStrategyDocument = mgrStrategyDocumentService.Create(mgrStrategyDocument1);
}
}
return Ok(mgrStrategyDocument);
}
}
邮递员
http://localhost:56888/api/documentupload/create
JSON
{
"ManagerStrategyId" : 5508,
[
"Name" : "x2",
"DocumentTypeId" : 2,
"DocumentDate" : "15/04/2010",
"DocumentContent" : [71,107,98]
],
[
"Name" : "x3",
"DocumentTypeId" : 3,
"DocumentDate" : "15/04/2010",
"DocumentContent" : [71,107,98]
],
[
"Name" : "x4",
"DocumentTypeId" : 4,
"DocumentDate" : "15/04/2010",
"DocumentContent" : [71,107,98]
]
}
【问题讨论】:
-
Controller 的 ModelState 属性中可能记录了一些内容?
-
抱歉没找到你?
-
对不起断句!如果那是 WebAPI / MVC 控制器,您将在那里有一个 ModelState 属性,当模型为空时通常会记录一些错误 - docs.microsoft.com/en-us/dotnet/api/…
-
它的 WEBAPI。我尝试调试 ModelState 并显示 Count: 1 IsReadOnly: false IsValid: false Keys: Count = 1 Values: Count = 1 Results View: Expanding Results View 将枚举 IEnumerable
-
是的,该列表中的 1 项将是您的错误消息 - 在调试视图中展开可枚举,您会看到它
标签: c# asp.net-web-api