我有以下情况:
用户可以上传多个文件的文档视图。一个(Document)到很多(文件)的关系。所有这些文件都通过其IDDocument属性“在文档内”。
用户将上传大量的.xml文件,每个文件上传都会在我的控制器中触发该操作:
[HttpPost]
public ActionResult ProcessSubmitUpload(HttpPostedFileBase attachments, Guid? idDocument)
{
//Validations
var xmlDocument = XDocument.Load(attachments.InputStream);
if (xmlDocument.Root.Name.LocalName == "cteProc")
{
if (DocumentCommonHelper.SendXmlViaWebService(xmlDocument))
{
_documentRepository.UpdateDocumentStatus(StatusOption.DocumentApproved);
}
else
{
_documentRepository.UpdateDocumentStatus(StatusOption.DocumentPending);
}
}
}
逻辑是:如果DocumentCommonHelper.SendXmlViaWebService(xmlDocument)中的所有文件都正确,则文档状态必须为“已批准”。但是,如果一个文件失败,则文档状态必须为Pending。
问题是此代码中的方法是错误的。因为每次执行Action时它都会改变文档的状态,伪造之前传递的其他HttpPostedFileBase。
最好的方法是什么?
答案 0 :(得分:1)
尝试在会话中存储HttpPostedFileBase并在需要时将其恢复回来
Session["HttpPostedFileBase"] = attachments;