ممنون. میشه قسمت بررسی نهایی در اکشن متد رو هم کپسوله کرد (چیزی شبیه به امکانات AOP سرخود در MVC). مثلا یک ویژگی جدید به نام ValidateCaptcha درست کرد که به اکشن متد اعمال شود و کار بررسی صحت اطلاعات ورودی مخصوص Captcha رو انجام و نهایتا اطلاعات ModelState رو بر اساس اطلاعات ورودی و Session ایی که در اینجا تعریف شده، به روز کنه:
به این صورت (با استفاده از ویژگی فوق) همان بررسی متداول ModelState.IsValid در یک اکشن متد کافی خواهد بود.
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class ValidateCaptchaAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var controllerBase = filterContext.Controller; var captchaInputTextProvider = controllerBase.ValueProvider.GetValue("CaptchaInputText"); if (captchaInputTextProvider == null) { controllerBase.ViewData.ModelState.AddModelError("CaptchaInputText", "لطفا تصویر امنیتی را وارد کنید"); base.OnActionExecuting(filterContext); return; } var inputText = captchaInputTextProvider.AttemptedValue; if (inputText != Session["captchastring"].ToString()) controllerBase.ViewData.ModelState.AddModelError("CaptchaInputText", "تصویر امنیتی را اشتباه وارد کرده اید"); } }