我正在使用C#和MVC处理Web应用程序项目,它将采用表单中的两个URL并使用它们来创建我创建的名为“ImageSwap”的类的实例。这个模型有一些数据(执行交换的人的用户名;两个变量保存要交换的两个图像的URL;两个变量保存这些文件的实际名称,而没有剩余的URL信息;以及两个表示检查这些文件的文件位置的数组)。现在,我有这样初始索引视图创建类的实例并将其传递给中放置了通过表格的信息,通过POST提交的,像这样相同的看法:在MVC中的视图之间传递数据
public ActionResult Index()
{
Ops.Operations.Models.ImageSwapModel newImageSwap = new Models.ImageSwapModel();
return View(newImageSwap);
}
[HttpPost]
public ActionResult Index(ImageSwapModel imageSwap)
{
var oldFileFound = false;
var newFileFound = false;
if (ModelState.IsValid)
{
//Perform data manipulation and set needed values
}
}
然后它对数据执行一些功能,比如解析出URL末尾的文件名,以及一个目录号(这是该文件名的第一部分,即目录#_fileName.jpg)。所有这些工作正常。
我的问题是,我想通过这个模型传递给另一个视图,一旦它的所有字段中有数据填充了这个初始的ActionResult,这样我就可以拥有一个验证视图,这将允许用户预览两个并排文件,以便他们可以确保他们交换适当的图像。然后,他们应该能够击中另一个提交按钮,这将启动实际移动/替换图像并被带到页面确认。
有没有办法将数据从这个控制器传递到不同的视图?我的困惑产生了,因为我无法用相同的输入创建索引的ActionResult的另一个版本,但我不想在没有预览和提示的情况下实际交换图像。我是否应该重新编写索引视图,以便它利用部分视图来完成此操作?通过多个步骤和视图持续保存数据的最简单方法是什么?
你可以使用会话,数据库,查询字符串参数在任何图层之间传递数据。 – semirturgay
经过简短的研究,看起来好像会话是最合理的方式。由于存储在类中的许多信息很容易从其他变量中派生出来,所以我不打算在数据库中将所有信息都放入数据库中。查询字符串参数需要在URL中传递太多数据。这些假设是否正确?如你所说, – ianodork
会议将是最适合你的情况... – semirturgay