Asp.net mvc 3 刷新MVC视图
我有一个小应用程序,它最初请求一个用户id。然后将该用户id作为参数发送到一个存储过程,该存储过程从数据库返回值。我希望这个应用程序每30秒刷新一次相同的值。我的问题是,当我刷新时,我丢失了用户id。这里是否缺少一些简单的东西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 = (
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,但在刷新时第一行产生错误,“对象引用未设置为对象的实例。”