Nee*_*ers 2 asp.net-mvc redirect
这是我的ActionResult方法:
[HttpGet]
public ActionResult Index(string cityID, string numbers, int days, bool onlySpecial)
{
LastTwoParameters lastTwoParameters = new LastTwoParameters();
lastTwoParameters.listCities = Common.GetDropDownCitiesList();
lastTwoParameters.listLastTwoResult = new List<getReport_LastTwo_Result>();
// if IsPostBack , then execute
if (!string.IsNullOrEmpty(cityID) && days > 0)
{
using (KQXS context = new KQXS())
{
lastTwoParameters.listLastTwoResult = context.getReport_LastTwo(cityID, numbers, days, onlySpecial).ToList();
}
}
return View(lastTwoParameters);
}
[HttpPost]//Run action method on form submission
public ActionResult Index(List<Cities> listCities, string cityID, string numbers, int days, bool onlySpecial)
{
return RedirectToAction("Index", "LastTwo", new{cityID = cityID, numbers = numbers, days = days, onlySpecial = onlySpecial});
}
Run Code Online (Sandbox Code Playgroud)
我需要的是检测是否从RedirectToAction方法调用页面.因为我没有必要在用户第一次打开页面时计算结果.
小智 6
有两种方法可以解决您的问题.
您可以使用服务端缓存.Controller具有TempData属性.只需设置为TempData ["wasRedirected"] = true即可.并且在您第一次从框架中读取后将清除该值.在您的情况下,TempData ["wasRedirected"] == null表示您的代码未被重定向.
您可以使用url params,例如您的操作:
public ActionResult Index(bool? wasRedirected)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
在重定向方法中,您将拥有如下代码:
[HttpPost]
public ActionResult Redirect()
{
return this.RedirectToAction("Index", new { wasRedirected = true });
}
Run Code Online (Sandbox Code Playgroud)在一个ActionFilter或通过覆盖OnAction{Executing, Executed}控制器上,您可以检查ActionResult类的类型.
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is RedirectResult)
{
//do stuff
}
base.OnActionExecuted(filterContext);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4228 次 |
| 最近记录: |