PDA

View Full Version : حرفه ای: استفاده از فیلتر AjaxOnly



helpsos
سه شنبه 03 تیر 1393, 17:55 عصر
سلام به همه
دوستان آقای نصیری در دات نت تیپس گفتن که برای مدیریت اینکه یک درخواست رسیده حتما ajax باشه از یک فیلتر که کد اون در زیر است استفاده کنید:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class AjaxOnlyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest() )
{
base.OnActionExecuting(filterContext);
}
else
{
throw new InvalidOperationException("این عملیات فقط با درخواستهای Ajax قابل دسترسی است");
}

}
}
و برای هر اکشن هم بنویسید
[ajaxOnly]
تا اینجا درست ولی:
وقتی کاربری بخواهد که اعمالی که باید ایجکسی انجام شود را دور بزند و مثلا آدرس اون اکشن را در آدرس بار بنویسد و به آن دسترسی داشته باشه برنامه خطای زیر را میده که باید از دکمه Continue استفاده کرد تا به کاربر پیغام مورد نظر را نشان بدهد.

حالا
سوال من اینه که باید چه کرد تا دیگه لازم به Continue نباشه و مستقیما همون خطا را بهش نشون بدهیم؟
یه دنیا دعاتون می کنم اگه جواب بدین:ناراحت:

hakim22
سه شنبه 03 تیر 1393, 22:17 عصر
دکمه continue در زمان debug نمایش داده میشه. اگر با Ctrl+F5 برنامه رو اجرا کنید فقط خطا برگردانده میشود. البته بهتر است صفحه ی خطای مخصوص طراحی کنید و مدیریت رویداد خطا را به آن بسپارید.

helpsos
سه شنبه 03 تیر 1393, 23:38 عصر
سلام
ببخشید میشه یکمی بیشتر راهنمایی کنید؟
چطوری صفحه مدیریت خطا درست کنم و این مورد از خطاهارو به اون ارسال کنم؟
ممنون میشم اگه راهنمایی کنید.
با تشکر

hakim22
چهارشنبه 04 تیر 1393, 08:18 صبح
یک کنترلر با نام errorcontroller بسازید و برای خطاهای خاص ویوی مخصوص خودشان را بسازید. بعد در web.config اصلی پروژه :

<customErrors mode="RemoteOnly" defaultRedirect="~/Error/NotFound">
<error statusCode="500" redirect="~/Error/Internal" />
<error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>