丢失我的字节数组在asp.net mvc模型绑定期间的所有数据
本文关键字:绑定 模型 数据 mvc net 字节 我的 字节数 数组 asp | 更新日期: 2023-09-27 18:13:27
我正在努力将文件附加到我正在构建的消息系统,我们正在使用剑道浏览器来获取文件及其上传方法。我遇到了一个问题,当我成功上传一个文件作为附件模型发送,并将其传递回发送消息的服务时,我失去了保存字节数组和mime类型的模型的Data属性。
- 页面绑定到一个带有消息模型和附件模型的宽体视图模型
- 视图模型被传递给mvc控制器的send方法,该方法接受一个消息模型和一个可选的附件模型
- 附件模型有两个属性,mime类型和Data属性,类型为byte[]
- 安全消息模型有一个属性,它是一个附件列表,它的类型是IList
这是执行kendo-Uploader魔术的控制器动作
public ActionResult SaveDocumentFile(HttpPostedFileBase DocumentFile)
{
AttachmentModel attachmentModel = new AttachmentModel();
attachmentModel.DocumentFile = new DocumentFileModel();
attachmentModel.DocumentFile.Data = FileManager.GetFileData(DocumentFile);
attachmentModel.DocumentFile.MimeType = DocumentFile.ContentType;
attachmentModel.FileName = DocumentFile.FileName;
return Json(attachmentModel);
}
它接受文件选择的结果,并将其作为附件模型发送回客户端,该附件模型被填充到视图模型中。
这是发送消息的控制器动作
public ActionResult SendMessage(SecureMessageViewModel messageView)
{
if (messageView == null)
messageView = new SecureMessageViewModel();
if (messageView.SecureMessage == null)
messageView.SecureMessage = new SecureMessageModel();
if(messageView.Attachment == null)
messageView.Attachment = new AttachmentModel();
if (messageView.Attachment.DocumentFile == null)
messageView.Attachment.DocumentFile = new DocumentFileModel();
IList<AttachmentModel> attachmentList = new List<AttachmentModel>();
attachmentList.Add(messageView.Attachment);
return Json(staffMessagingService.SendMessage(messageView.SecureMessage, attachmentList), JsonRequestBehavior.AllowGet);
}
这将一个安全消息模型和一个附件模型传递给服务层,这就是它崩溃的地方,因为服务层检查数据(附件模型上的一个属性),如果没有数据就抛出异常,在这种情况下没有数据,即使它从html->Angular->到HTTP流都存在。然后它就消失了。
当我在客户端上的保存方法中中断时,我看到我的视图模型中加载了mime类型和字节数组的附件模型。当我在发送消息视图上打破控制器有一个mime类型的附件,但没有数据。我在调试器中对请求进行监视,可以看到http流中的数组,但我的模型没有绑定到它。
有人遇到过类似的问题吗?如果是这样的话,问题是什么呢?到目前为止,谷歌博士还没有提供任何帮助。
我有一种感觉这不是最好的解决方案,但我确实找到了一个工作,我添加了一个字符串属性到我的附件模型,并将字节数组转换为字符串,然后将其发送回客户端。然后在send方法中将其转换回数组,然后将其推送到服务器。这让我越过了数组没有绑定到模型的事实。我用来转换的方法是HttpServerUtility。UrlTokenDecode和encode方法