假设我有page1.aspx和page2.aspx,我使用查询字符串将一些数据从page1发送到page2并分配给某个变量。
第2页中有一些字段,因此用户必须保留一段时间才能继续下一页(例如第3页)。
如果第二个用户也访问来自page1的page2,那么从查询字符串中获取值的page2的变量会发生变化吗?
修改
示例:我在服务器中有“txt /”,“img /”和“temp /”等文件夹,第1页有文件上传选项,用户可以上传文件,它将保存在“temp /”文件夹中。
在同一页面中有文件扩展名检查方法,对应于扩展名,信息将发送到第2页,
第1页:
string filePath;
if(extension == "txt")
{
filePath = "txt/";
Response.Redirect("Page2.aspx?filePath=" + filePath + "&fileName=" + fileName);
}
if(extension == "png")
{
filePath = "img/";
Response.Redirect("Page2.aspx?filePath=" + filePath + "&fileName=" + fileName);
}
2页:
string fileName = HttpContext.Current.Request.QueryString["fileName"].ToString();
string filePath = HttpContext.Current.Request.QueryString["filePath"].ToString();
string savingPath = filePath + fileName;
并且第2页中有“保存”按钮以保存文件。
user1上传txt文件并进入第2页并在2分钟后单击“保存”按钮,但在用户单击“保存”按钮之前,user2上传图像文件并转到第2页。 所以现在首先将文件即txt文件保存到“img”文件夹(这是我的疑问),因为来自查询字符串的filePath变为“img /”或者所有内容都将按预期完成,这意味着txt文件将保存在“txt /”中?
答案 0 :(得分:5)
查询字符串参数由浏览器存储在请求之间,它们永远不会存储在服务器上(例如,与会话变量相对)。因此,它只能是用户独立的。
每个对服务器的新请求都会创建一个新的查询字符串,并将变量与它一起传递。
我假设您正在做的是在Page2.aspx的末尾创建一个链接或按钮,其中包含您需要传递给Page3的变量。在这种情况下,将发生的是作为Page2的一部分发送的HTML将包含这些地址,浏览器将存储它们,直到用户准备好提交并使用当时的url(以及任何查询字符串参数)。 / p>
答案 1 :(得分:3)
您的问题应该更加结构化和清晰。试着举个例子。与此同时,我将尝试以我理解的方式回答您的问题。
查询字符串不是特定于用户的,它是特定于请求的含义,查询字符串参数除了查询字符串之外不在任何地方。这意味着即使相同的用户第二次访问page2到page1,原始page2中的值也不会被更改...
在mvc中共享变量的不同选项:
答案 2 :(得分:2)
根据您上面的特定情况,user1和user2之间的查询字符串值将完全独立。这意味着user1上传的第一个文件将保存到/txt
文件夹,user2上传的第二个文件将保存到/img
文件夹。
但是,如果user1和user2都使用完全相同的名称上传文件,请说abc.txt
,那么user1将覆盖user1中的第一个文件。您需要检查第1页中是否存在上传的文件名以避免这种情况。我建议通过添加一些递增的数字来重命名上传的文件名。例如,如果user1刚刚在page1中上传了abc.txt
,那么当user2稍后上传abc.txt
时,请将文件名更改为abc-1.txt
,或者更改为abc-2.txt
if {{ 1}}也存在等等。希望有所帮助。