Eigentlich habe ich eine Anwendung, die einen WebService verwendet, um einige Client-Informationen abzurufen. So wurde ich Validieren der Anmeldeinformationen in meinem Action wie:ASP.NET MVC - ActionFilterAttribute, um POST-Daten zu validieren
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ClientLogin(FormCollection collection)
{
if(Client.validate(collection["username"], collection["password"]))
{
Session["username"] = collection["username"];
Session["password"] = collection["password"];
return View("valid");
}
else
{
Session["username"] = "";
Session["password"] = "";
return View("invalid");
}
}
Wo Client.Validate() ist eine Methode, die einen Booleschen Wert zurück, basierend auf den Informationen über den Benutzernamen und das Kennwort POST bereitgestellt
Aber ich änderte meine Meinung und ich würde gerne dieses nette ActionFilterAttributes am Anfang der Methode verwenden, so dass es nur gerendert wird, wenn das Client.validate() true zurückgibt, genauso wie [Authorize], aber mit meinem eigenen Webservice, also würde ich es tun habe etwas wie:
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAsClient(username=postedUsername,password=postedPassword)]
//Pass Posted username and password to ValidateAsClient Class
//If returns true render the view
public ActionResult ClientLogin()
{
return View('valid')
}
und dann im Innern des ValidateAsClient hätte ich so etwas wie:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Also mein Problem ist, ich weiß nicht genau, wie es funktioniert, weil ich weiß nicht, wie die Veröffentlichung von Informationen zu übergeben die [ValidateAsClient (Benutzername = PostedUsername, Passwort = PostedPassword)] und auch, wie könnte ich die Funktion ValidateAsClient funktionieren ordnungsgemäß?
Ich hoffe, das ist einfach Vielen Dank im Voraus
Ich denke, Sie könnten mit 'filterContext.HttpContext.Request.Form' auf die Formularsammlung zugreifen, anstatt sie zu übergeben. –
vielen Dank für das HeavyWave sehr gut, eine andere Frage: Gibt es einen Unterschied zwischen ActionExecutingContext und ActionExecutedContext in diesem Fall? Danke – zanona
ActionExecutedContext sollte in der OnActionExecuted-Methode verwendet werden, die nach der Aktionsmethode des Controllers ausgeführt wird. In ActionExecutedContext haben Sie also Zugriff auf einige der Ergebnisse der Ausführung. Spiel einfach mit IntelliSense herum. –