C# 将文件名添加到列表<;字符串>;
我正在使用Asp.NETMVC和C#开发一个web应用程序。用户可以通过C# 将文件名添加到列表<;字符串>;,c#,jquery,asp.net,asp.net-mvc,C#,Jquery,Asp.net,Asp.net Mvc,我正在使用Asp.NETMVC和C#开发一个web应用程序。用户可以通过jqueryajax上传文件。我试图做的是将用户上传的每个文件名添加到列表中。为此,我有以下代码: public class FileUploadController : Controller { private List<string> UploadedFileNames = new List<string>(); public List<string> AddFile
jqueryajax
上传文件。我试图做的是将用户上传的每个文件名添加到列表中。为此,我有以下代码:
public class FileUploadController : Controller
{
private List<string> UploadedFileNames = new List<string>();
public List<string> AddFileNameToList(string fileName)
{
UploadedFileNames.Add(fileName);
return UploadedFileNames;
}
public JsonResult UploadFile(string fileName)
{
//save file to directory etc
AddFileNameToList(fileName);
return Json(new {});//relevant info for the user
}
}
公共类FileUploadController:控制器
{
私有列表UploadedFileNames=新列表();
公共列表AddFileNameToList(字符串文件名)
{
上传文件名。添加(文件名);
返回上传的文件名;
}
公共JsonResult上载文件(字符串文件名)
{
//将文件保存到目录等
AddFileNameToList(文件名);
返回Json(new{});//用户的相关信息
}
}
使用上面的代码,每次我上传一个文件并将文件名添加到UploadedFileNames
中时,上一个计数总是0,而不是包含所有上一个文件名的all
有人能告诉我如何做到这一点吗 为每个请求创建一个新的控制器实例。因此,您的列表是每个请求的一个新实例。您需要将此列表保存到其他位置
如果您只需要了解用户在站点上的时间段的信息,则可以使用会话
然而,当它上传文件时,我怀疑您可能希望更长期地存储信息,以便返回的用户可以看到他们上传的内容。在这种情况下,每次请求时都会将信息保存到数据库。问题可能是每次用户尝试上载文件时,FileuploadController类都会初始化,因此每次上载时,UploadedFilenames
list将重置为空list,将上载的文件名设置为静态,以防止出现这种情况。您可以使用类似以下代码将列表添加到会话中:
if (Session["UploadedFileNames"] != null)
{
Session["UploadedFileNames"] = new List<string>() { fileName };
}
else
{
var list = (Session["UploadedFileNames"] as List<string>);
list.Add(fileName);
Session["UploadedFileNames"] = list;
}
if(会话[“UploadedFileNames”]!=null)
{
会话[“UploadedFileNames”]=新列表(){fileName};
}
其他的
{
var list=(会话[“UploadedFileNames”]作为列表);
添加(文件名);
会话[“UploadedFileNames”]=列表;
}
MVC控制器实例FileUploadController
(以及任何其他控制器实例)的寿命非常短。每个请求只使用一次实例,列表在其中无法生存。您需要像会话一样将列表存储在某个位置。您每次都要创建一个新列表,在会话中保存它,并检查会话中是否存在列表,使用该列表,否则创建一个。@thmshd如果您能提供一个示例,是否可能please@Code如果根据每个用户保存文件,创建一个服务,在需要时检索列表。@代码是,但这是您应该在Internet上很容易找到的。但是要开始使用它static
会带来一大堆其他问题,其中最重要的一点是,它会变得不安全,请不要这样做。我们讨论的是一个Web应用程序,我怀疑您是否希望所有用户都管理同一个列表