私は2つのコントローラBaseとLoginを持っています。asp.net mvcコントローラでreturnurlを取得できません
ベースコントローラ:
public ActionResult start()
{
string action = Request.QueryString[WSFederationConstants.Parameters.Action];
}
ログインコントローラー:
public ActionResult Login(string user,string password,string returnUrl)
{
if (FormsAuthentication.Authenticate(user, password))
{
if (string.IsNullOrEmpty(returnUrl) && Request.UrlReferrer != null)
returnUrl = Server.UrlEncode(Request.UrlReferrer.PathAndQuery);
return RedirectToAction("Start","Base", returnUrl });
}
return View();
}
認証した後は、それが予想通りベースコントローラにアクションを開始するためにリダイレクトされます行われます。 しかし、クエリ文字列は値をフェッチしません。 querystringの上にホバーすると、長さの値は表示されますが、uriは表示されません。
どのようにベースコントローラにログインコントローラから送信されたURLを使用して、それからパラメータを取得するには?
'WSFederationConstants.Parameters.Action'は何ですか。そして、その定数の値が '' returnUrl "'であれば 'return RedirectToAction(" Start "、" Base "、new {returnUrl = returnUrl}); "returnUrl"の文字) –
@StephenMueckeが提案したように、ベースコントローラーでURLを取得できました。しかし、取り出したURLが/(スラッシュ)と?(疑問符)の代わりに '%2f%f wsignin ...'と表示されていますので、アクション変数はクエリ文字列からアクションを取得できません。 –
それはメソッドがそれをエンコードするためです。しかし、これの目的は何ですか? 'returnUrl'の値があれば、' return RedirectToLocal(returnUrl); 'を使ってリダイレクトするのはなぜですか?' start() 'メソッドは何ですか? –