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
Asp.net mvc 而不是会话变量,我可以在mvc中保存我的临时数据吗?_Asp.net Mvc_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

Asp.net mvc 而不是会话变量,我可以在mvc中保存我的临时数据吗?

Asp.net mvc 而不是会话变量,我可以在mvc中保存我的临时数据吗?,asp.net-mvc,asp.net-mvc-3,model-view-controller,Asp.net Mvc,Asp.net Mvc 3,Model View Controller,我已经创建了一个mvc3应用程序。 目前正在将提交表单值保存到会话中,因为我需要在这之前做一些事情 将更改保存到数据库 有没有其他像ViewState这样在mvc中存储临时数据的好方法 每次输入数据和单击提交按钮时,我都将表单输入值保存到会话变量中 每次提交后,我都会用新添加的值填充会话变量,并将所有这些值显示到webgrid中 完成插入后,最后单击更新按钮,该按钮从webgrid获取所有值并作为参数传递给一个存储过程 Now here i want to achieve 2 things 1.

我已经创建了一个mvc3应用程序。 目前正在将提交表单值保存到会话中,因为我需要在这之前做一些事情 将更改保存到数据库

有没有其他像ViewState这样在mvc中存储临时数据的好方法

每次输入数据和单击提交按钮时,我都将表单输入值保存到会话变量中

每次提交后,我都会用新添加的值填充会话变量,并将所有这些值显示到webgrid中

完成插入后,最后单击更新按钮,该按钮从webgrid获取所有值并作为参数传递给一个存储过程

Now here i want to achieve 2 things
1.need to save all inserted data as clicked on submit it gets refresh all time.
so need to save all previous data to.
2.currently using session variable which sets to webgrid to show data into webgrid and once done with insertion passing those values to stored procedure.
因此,我们需要知道其他保存数据的好方法

Else can use javascript to do this all on client side.
您可以使用TempData,但要知道它只在一个请求到下一个请求之间持续存在

TempData["someKey"] = "";

如果需要跨帖子持久化数据,会话是合适的位置。如果需要将数据写入数据库,那么模型应该在post上处理数据。在控制器中:

[HttpPost]
public ActionResult Index(YourModel model)
{
    if (ModelState.IsValid)
    {
        model.SaveToDataBase();
        return View("Success");
    }
    return View("Index", model);
}
然后在模型中:

[Serializable]
public class YourModel
{
    [Required]
    public string YourData { get; set; }

    public void SaveToDataBase()
    {
         //TODO - add code to call stored procedure with data posted to model
    }
}

出于两个原因,您应该避免尝试使无状态web看起来有状态的方案

首先,会话不会避免往返,它只是名义上不同于在数据库中存储值。是的,从SQL获取内存要比从SQL获取内存快,但这不能很好地扩展—要扩展到1台以上的服务器,您必须添加组件和跃点,以减少增益并显著增加复杂性

其次,会话值很可能会进入数据库,所以为什么不从数据库开始呢

第三,是的,另一个,会话不一定像隐藏的表单字段一样值得信任

在13年的时间里,我看到session几乎完全用于错误的事情——开发人员为了方便而倒退到使用session,后来后悔了,替换session并不得不维护代码的开发人员也是如此


简言之,使用数据库存储这些信息,并了解如何获取和缓存这些信息。

问题是:您希望存储这些数据多长时间,谁应该访问这些数据?大约1分钟我需要这些数据。。因为我需要将数据传递给一个存储过程……我认为要么在web请求中处理并保存数据,然后就不需要将其存储在其他地方,要么在某个异步后台任务中进行数据处理。然后你可以将数据传递到后台线程。这不是mvc3特有的,而是一般的web应用。您必须告诉我们您到底想对发布的数据做什么,以及为什么在处理当前web请求时不可能这样做的更多细节。您应该避免尝试使无状态web看起来有状态的方案,原因有两个。13年来,我看到session几乎完全用于错误的事情——开发人员为了方便而回归到使用session,后来又后悔了。我需要保存这些值,因为我在我的webgrid中显示了这些值,所以插入新值将更新webgrid。。在这种情况下,TempData没有什么用处。请解释:我不能使用数据库中的表,这就是为什么我需要一些东西来存储mt temp数据:请建议其他东西,而不是会话使用ViewData对象,并在帖子之间自己保存它。在每篇文章中都包含一个包含ViewData的隐藏字段。