Ich habe zwei Controller Base und Login.Nicht möglich, returnurl in asp.net mvc Controller
Basis Controller:
public ActionResult start()
{
string action = Request.QueryString[WSFederationConstants.Parameters.Action];
}
Anmeldung Controller:
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();
}
Nach der Authentifizierung es weitergeleitet wird getan wird Aktion in Basissteuerung zu starten, wie erwartet. Aber die Abfragezeichenfolge holt den Wert nicht. Wenn es über den Querystring verschoben wird, zeigt es den Längenwert, aber nicht das URI.
Wie die URL verwendet wird, die vom Login-Controller im Base Controller gesendet wird, und Parameter von diesem abrufen?
Was ist 'WSFederationConstants.Parameters.Action'. Und es muss 'return RedirectToAction (" Start "," Base ", neu {returnUrl = returnUrl});' wenn der Wert dieser Konstante '" returnUrl "' ist (du bekommst 'length = 9' weil es 9 sind Zeichen in "returnUrl") –
wie von @ StephenMuecke vorgeschlagen habe ich und kann die URL in Base Controller. Aber die abgerufene URL hat kein richtiges Format und kommt mit '% 2f% f wsignin ...' anstelle von/(Schrägstrich) und? (Fragezeichen), so dass die Aktionsvariable die Aktion nicht aus der Abfragezeichenfolge abrufen kann. –
Das, weil die Methode es codiert. Aber was ist der Zweck davon? Wenn Sie einen Wert für 'returnUrl' haben, warum werden Sie nicht einfach mit 'return RedirectToLocal (returnUrl) 'dorthin umgeleitet?' - Was ist Ihre 'start()' Methode für? –