C# MVC3是否需要在视图之间传递模型以保持状态?
我有8个标签为C# MVC3是否需要在视图之间传递模型以保持状态?,c#,asp.net-mvc-3,model,razor,C#,Asp.net Mvc 3,Model,Razor,我有8个标签为Step0-Step7的页面,用于将数据增量保存到名为dr405的模型中。在Step7之后,我需要显示一个Upload.cshtml,它根据来自我的自定义配置文件提供程序的DR405Profile.CurrentUser.TangiblePRopertyID创建一个文件夹。因此,从现在起,我不会在Upload.cshtml上发布任何从Step7到Upload.cshtml的内容。Upload.cshtml之后,我将显示UploadSummary.cshtml,它根据DR405Pro
Step0-Step7
的页面,用于将数据增量保存到名为dr405
的模型中。在Step7
之后,我需要显示一个Upload.cshtml,它根据来自我的自定义配置文件提供程序的DR405Profile.CurrentUser.TangiblePRopertyID
创建一个文件夹。因此,从现在起,我不会在Upload.cshtml上发布任何从Step7
到Upload.cshtml的内容。Upload.cshtml之后,我将显示UploadSummary.cshtml,它根据DR405Profile.CurrentUser.TangiblePRopertyID
简单列出目录中的文件。现在,我必须将用户带到一个review
页面,该页面显示dr405模型的DB持久化数据。这是否意味着即使这些页面与模型没有交互,我也必须通过上传和上传摘要来传递我的模型
我的计划是将ID作为隐藏参数从
步骤7->Upload->UploadSummary->Review(id)您有几个选项可以跨请求持久化数据 您可以使用MVC特性。您可以使用TempData的/feature保留它,直到需要处理它为止(默认情况下,一旦访问数据,它就会被删除)
会话也可以工作,但不建议使用,因为在单元测试中很难进行测试。您有几个选项可以跨请求持久化数据 您可以使用MVC特性。您可以使用TempData的/feature保留它,直到需要处理它为止(默认情况下,一旦访问数据,它就会被删除)
会话也可以工作,但不建议使用,因为在单元测试中很难进行测试。这很好。获取数据库条目的ID是标准做法。它需要更少的带宽,允许MVC更快地解析正确的路由/控制器/操作,并且不会给坏人提供向服务器发送恶意数据的更多空间。这很好。获取数据库条目的ID是标准做法。它需要更少的带宽,允许MVC更快地解决正确的路由/控制器/操作,而且也没有给坏人太多的机会向你的服务器发送恶意数据。如果我有30个中间步骤,比如上传和上传摘要,我需要将ID传入和传出每个页面,以便下一个页面可以获得ID值,这是正确的吗?是的,按照Frazell的建议,TempData是一种简单的方法如果我有30个中间步骤,比如上载和上载摘要,那么我需要将ID传入和传出到每个页面,以便下一页可以获得ID值,这是正确的吗?是的,按照Frazell的建议,TempData是一种简单的方法
public ActionResult Review(string id)
{
var service = new DR405Service();
var dr405 = db.dr405s.FirstOrDefault(d => d.TangiblePropertyId == id);
return View(dr405);
}
public ActionResult UploadSummary()
{
var saveLocation = Path.Combine(Server.MapPath("\\"), "returns\\" + DR405Profile.CurrentUser.TangiblePropertyId);
ViewData["files"] = Directory.GetFiles(saveLocation).ToList() ;
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase uploadfile)
{
var saveLocation = Path.Combine(Server.MapPath("\\"), "returns\\" + DR405Profile.CurrentUser.TangiblePropertyId);
System.IO.Directory.CreateDirectory(saveLocation);
uploadfile.SaveAs(Path.Combine(saveLocation, Path.GetFileName(uploadfile.FileName)));
ViewData["UploadStatus"] = String.Format("File name: {0}, {1}Kb Uploaded Successfully.", uploadfile.FileName, (int)uploadfile.ContentLength / 1024);
return View();
}