Asp.net mvc 3 刷新MVC视图

Asp.net mvc 3 刷新MVC视图,asp.net-mvc-3,razor,page-refresh,Asp.net Mvc 3,Razor,Page Refresh,我有一个小应用程序,它最初请求一个用户id。然后将该用户id作为参数发送到一个存储过程,该存储过程从数据库返回值。我希望这个应用程序每30秒刷新一次相同的值。我的问题是,当我刷新时,我丢失了用户id。这里是否缺少一些简单的东西 public ActionResult Report() { string operatorCode = Request.Form.GetValues("txtOperator")[0].ToString(); ViewBag.operatorName = (

我有一个小应用程序,它最初请求一个用户id。然后将该用户id作为参数发送到一个存储过程,该存储过程从数据库返回值。我希望这个应用程序每30秒刷新一次相同的值。我的问题是,当我刷新时,我丢失了用户id。这里是否缺少一些简单的东西

public ActionResult Report()
{

  string operatorCode = Request.Form.GetValues("txtOperator")[0].ToString();

  ViewBag.operatorName = (from e in db.employees
                          where e.operator_code == operatorCode
                          select e.name).Max().ToString();            

  ViewData["operatorCode"] = operatorCode;            

  var results =  db.lex_sp_Select_Paintline_FinRew_Operator(operatorCode);

  Response.AddHeader("Refresh", "10");

  return View(results.ToList());
}

将其存储在临时会话中,然后在丢失时从那里使用如何

 string operatorCode = Request.Form.GetValues("txtOperator")[0].ToString();
    TempData["operatorCode"] = operatorCode;

     if (!String.IsNullOrEmpty(operatorCode))
     {
        TempData["operatorCode"] = operatorCode;

         ViewBag.operatorName = (from e in db.employees
                          where e.operator_code == operatorCode
                          select e.name).Max().ToString();            

   ViewData["operatorCode"] = operatorCode;            

    var results =  db.lex_sp_Select_Paintline_FinRew_Operator(operatorCode);

    Response.AddHeader("Refresh", "10");

    return View(results.ToList());

     }
     else
     {
        var tempCode = TempData["operatorCode"]
        ViewData["operatorCode"] = tempCode;            

        var results =  db.lex_sp_Select_Paintline_FinRew_Operator(tempCode);

        Response.AddHeader("Refresh", "10");

        return View(results.ToList());
     }

我认为空值的主要原因是因为您正在尝试刷新HttpPost,而不是请求(刷新头不适用于POST)。作为替代方案,我建议您将流程更改为请求,这将导致只需要更改调用代码(到get)并将报告操作更改为:

string operatorCode = Request.QueryString["txtOperator"];

这应该会给你想要的结果,尽管现在的行为是一个get而不是post。您还可以在会话中存储运算符代码(尽管这可能无法很好地扩展)。我看到的最后一个选项是在setInterval()上运行ajax请求,并使用该进程向控制器操作发送POST。

我也尝试使用tempdata,但在刷新时第一行产生错误,“对象引用未设置为对象的实例。”