以下是我的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});
}
我需要检测是否从RedirectToAction
方法调用页面。因为我不需要在用户第一次打开页面时计算结果。
答案 0 :(得分:6)
有两种方法可以解决您的问题。
您可以使用服务端缓存。 Controller具有TempData属性。 只需设置为TempData [“wasRedirected”] = true即可。并且在您第一次从框架中读取后将清除该值。在您的情况下,TempData [“wasRedirected”] == null表示您的代码未被重定向。
您可以使用url params,例如您的操作:
public ActionResult Index(bool? wasRedirected)
{
return View();
}
在重定向方法中,您将拥有如下代码:
[HttpPost]
public ActionResult Redirect()
{
return this.RedirectToAction("Index", new { wasRedirected = true });
}
答案 1 :(得分:5)
在ActionFilter
中或通过覆盖控制器上的OnAction{Executing, Executed}
,您可以检查ActionResult
类的类型。
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is RedirectResult)
{
//do stuff
}
base.OnActionExecuted(filterContext);
}