In realtà, ho un'applicazione che utilizza un servizio Web per recuperare alcune informazioni sui client. così mi è stato la convalida dei dati dati dentro la mia ActionResult come:ASP.NET MVC - ActionFilterAttribute per convalidare i dati POST
[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");
}
}
Dove Client.Validate() è un metodo che restituisce un valore booleano in base alle informazioni fornite sul nome utente e la password POST
Ma io ho cambiato idea e vorrei usare quel simpatico ActionFilterAttributes all'inizio del metodo in modo tale che venga reso solo se il client.validate() restituisce true, proprio come [Authorize] ma con il mio webservice personalizzato, quindi vorrei avere qualcosa come:
[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')
}
e poi dentro la ValidateAsClient vorrei avere qualcosa di simile:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Quindi il mio problema è, non so esattamente come farlo funzionare, perché non so come passare le informazioni pubblicate a the [ValidateAsClient (username = postatoUsername, password = postatoPassword)] e inoltre, come è possibile che la funzione ValidateAsClient funzioni correttamente?
Spero che questo sia facile da capire Grazie in anticipo
Penso che potresti accedere alla raccolta moduli con 'filterContext.HttpContext.Request.Form', invece di passarlo sopra. –
grazie per l'ottimo HeavyWave, un'altra domanda: c'è qualche differenza tra l'uso di ActionExecutingContext e ActionExecutedContext in questo caso? Grazie – zanona
ActionExecutedContext deve essere utilizzato nel metodo OnActionExecuted, che viene eseguito dopo il metodo di azione del controllore. Quindi in ActionExecutedContext hai accesso ad alcuni dei risultati dell'esecuzione. Basta giocarci con IntelliSense. –