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 用ではありません)。別の方法として、プロセスをリクエストに変更することをお勧めします。これにより、呼び出しコードを (get に) 変更し、Report アクションを次のように変更するだけで済みます。

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

これにより、アクションが投稿ではなく取得になるという犠牲を払って、望ましい結果が得られるはずです。また、operatorCode を Session に格納することもできます (ただし、これはうまくスケーリングできない可能性があります)。私が見ることができる最後のオプションは、setInterval() で ajax リクエストを実行し、そのプロセスを使用してコントローラー アクションに POST を送信することです。

于 2012-05-29T16:10:09.963 に答える