在 Mvc 中,在使用 RedirectToAction("ReqAction", odetails) 时出现错误,因为“输入不是有效的 base 64 字符串,因为它包含非 base 64 字符”

问题描述

如果在没有对象的情况下通过

return RedirectToAction("ReqAction"); 

在模型中使用 public HttpPostedFileBase Provisionforattachment { get; set; }文件存储在数据库中。

在之前的模型中转换为字节以将文件存储在数据库中。

byte[] UploadedFile = new byte[oPModelViewObject.Provisionforattachment.InputStream.Length];                         
oPModelViewObject.Provisionforattachment.InputStream.Read(UploadedFile,UploadedFile.Length); 

试了好几次都没上传文件就正常了。

错误是否因为包含 HTTPPostedFileBase 类型的 Provisionforattachment 的对象而发生。任何人都可以建议使用该对象重定向

解决方法

为什么只在模型中取字符串只保存文件名然后直接发布到您的控制器,您可以通过以下代码将其存储到服务器

String TempFileName;
HttpFileCollection MyFileCollection = Request.Files[0];
TempFileName = "C:\\TempFiles\\File_" + MyFileCollection.FileName .ToString();
// Save the file.
MyFileCollection.SaveAs(TempFileName);
    

参考下面的参数来传递你的当前值

RedirectToAction(String)
使用动作名称重定向到指定动作。

RedirectToAction(String,Object)
使用操作名称和路由值重定向到指定的操作。

RedirectToAction(String,String)
使用动作名称和控制器名称重定向到指定动作。

RedirectToAction(String,RouteValueDictionary)
使用动作名称和路由字典重定向到指定的动作。

RedirectToAction(String,String,Object)
使用动作名称、控制器名称和路由字典重定向到指定动作。

RedirectToAction(String,RouteValueDictionary)
使用操作名称、控制器名称和路由值重定向到指定的操作。