Asp.net mvc ASP.NETMVC中使用TemData的多步骤信息提交

Asp.net mvc ASP.NETMVC中使用TemData的多步骤信息提交,asp.net-mvc,Asp.net Mvc,我正在开发一个MVC web表单,用户将在第一步提交唱片集信息,在第二步提交唱片集信息后,用户可以提交曲目信息数据。但我不太清楚在MVC中该怎么做,在普通的Web表单中,这对我来说很容易。我正在为此寻找解决方案。如果您在步骤1结束时没有将相册信息写入某种永久存储,例如数据库、文件等,那么您可以使用TempData跟踪在页面请求之间输入向导的信息 TempData在引擎盖下使用会话状态,并且仅在单个请求中保持不变,因此您需要在每个控制器操作结束时将唱片集/曲目信息写入TempData,并在每个操作

我正在开发一个MVC web表单,用户将在第一步提交唱片集信息,在第二步提交唱片集信息后,用户可以提交曲目信息数据。但我不太清楚在MVC中该怎么做,在普通的Web表单中,这对我来说很容易。我正在为此寻找解决方案。

如果您在步骤1结束时没有将相册信息写入某种永久存储,例如数据库、文件等,那么您可以使用TempData跟踪在页面请求之间输入向导的信息


TempData在引擎盖下使用会话状态,并且仅在单个请求中保持不变,因此您需要在每个控制器操作结束时将唱片集/曲目信息写入TempData,并在每个操作开始时再次读取。然后,一旦你积累了所有的专辑/曲目信息,将其写入永久存储。

你也可以考虑只在URL中存储相册和跟踪ID。这样做有一些好处,比如可以为URL添加书签并通过电子邮件发送给朋友

将RouteValueDIctionary传递给UrlHelper.Action()方法时,字典中不属于路由的任何参数都将添加到查询中。所以你可以这样做:

return Redirect(Url.Action("myaction", "mycontroller", 
    new { album = selectedAlbumVariable, track = selectedTrackVariable }));
然后将它们添加到动作参数中,在动作中检索它们,如下所示:

public ActionResult SomeAction(string album, string track) { ... }

在使用相册和曲目之前,您必须检查它们是否为空。

您可以按照pmarflee的建议进行操作,下面是一个使用TempData的小示例:

public ActionResult Step1()
{
    var MyObject = new List<string>();
    //Some Logic
    //Set the TempData
    TempData["data"] = MyObject;
    return RedirectToAction("Step2");
}

public ActionResult Step2()
{
    //Get the Data From the TempData and Cast it
    var MyObject = (List<string>)TempData["data"];
    //Continue working
    return View();
}
public ActionResult步骤1()
{
var MyObject=新列表();
//一些逻辑
//设置临时数据
TempData[“数据”]=MyObject;
返回重定向操作(“步骤2”);
}
公共行动结果第2步()
{
//从TempData中获取数据并强制转换它
var MyObject=(列表)TempData[“数据”];
//继续工作
返回视图();
}
请记住,此数据仅可用于1次以上操作,如果要继续传递数据,必须在TempData Dictionary中再次设置数据


您还可以使用另一种方法将数据序列化到隐藏字段中,这种方法更简洁,但需要更多的工作,如果您只想保存几个字段,那么TempData很好用。

如何存储唱片集/曲目信息。在数据库中?