0

我有一个最初请求用户 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());
}
4

2 回答 2

0

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

 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());
     }
于 2012-05-29T15:57:25.233 回答
0

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

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

这应该会给你想要的结果,但代价是现在的动作是获取而不是发布。您还可以将 operatorCode 存储在 Session 中(这可能无法很好地扩展)。我可以看到的最后一个选项是在 setInterval() 上运行 ajax 请求并使用该进程向控制器操作发送 POST。

于 2012-05-29T16:10:09.963 回答