其實我有一個應用程序使用WebService來檢索某些客戶端信息。 所以我驗證我的ActionResult內的登錄信息,如:ASP.NET MVC - ActionFilterAttribute驗證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");
}
}
凡Client.Validate()是根據設在POST用戶名和密碼
但我的信息返回boolean值的方法改變了我的想法,我想在該方法的開頭使用那個很好的ActionFilterAttributes,所以如果Client.validate()返回true,就和[Authorize]一樣,但是使用我自定義的webservice,所以我會有類似的東西:
[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')
}
然後ValidateAsClient裏面我想有這樣的事情:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
所以我的問題是,我不知道如何使它工作,因爲我不知道該怎麼張貼的信息傳遞給[ValidateAsClient(username = postedUsername,password = postingPassword)]以及如何使函數ValidateAsClient正常工作?
我希望這是很容易理解提前
我想你可以通過'filterContext.HttpContext.Request.Form'訪問表單集合,而不是傳遞它。 – 2009-10-21 15:54:13
感謝那個HeavyWave非常好,另一個問題:在這種情況下使用ActionExecutingContext和ActionExecutedContext是否有區別? 謝謝 – zanona 2009-10-21 16:00:08
ActionExecutedContext應該用在OnActionExecuted方法中,該方法在控制器的操作方法之後執行。所以在ActionExecutedContext中你可以訪問一些執行的結果。只需使用IntelliSense進行遊戲即可。 – 2009-10-21 16:12:22