Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC3是否需要在视图之间传递模型以保持状态?_C#_Asp.net Mvc 3_Model_Razor - Fatal编程技术网

C# MVC3是否需要在视图之间传递模型以保持状态?

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

我有8个标签为
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();
    }