アクションフィルターを使用して、セッションの値を確認し、場所がまだ保存されていない場合はビューにリダイレクトできます。キャプチャすると、元のビューにリダイレクトできます。
何かのようなもの:
public class CheckLocationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var location = filterContext.HttpContext.Session["Location"];
if (string.IsNullOrWhiteSpace(location))
{
// store the requested URL for use once location has been chosen
filterContext.Controller.TempData["ReturnToUrl"] = filterContext.HttpContext.Request.Url;
// redirect to location choice view
filterContext.Result = new RedirectResult(VirtualPathUtility.ToAbsolute("~/Location/Choose"));
}
}
}
次に、必要に応じてコントローラー/アクションでこの属性を使用します。
public class SomeController : Controller
{
[CheckLocation]
public ActionResult Index()
{
// location has been checked so continue
return View();
}
}