PDA

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



araz_pashazadeh
سه شنبه 28 اردیبهشت 1395, 19:57 عصر
با سلام
بنده فیلتری برا یارسال فایل به سرور به شکل زیر نوشتم:
public class AllowUploadSpecialFilesOnlyAttribute : ActionFilterAttribute {
private readonly List<string> _toFilter = new List<string>();
private readonly string _extensionsWhiteList;


public AllowUploadSpecialFilesOnlyAttribute(string extensionsWhiteList)
{
if (string.IsNullOrWhiteSpace(extensionsWhiteList))
throw new ArgumentNullException("extensionsWhiteList");


_extensionsWhiteList = extensionsWhiteList;
var extensions = extensionsWhiteList.Split(',');
foreach (var ext in extensions.Where(ext => !string.IsNullOrWhiteSpace(ext)))
{
_toFilter.Add(ext.ToLowerInvariant().Trim());
}
}


private bool CanUpload(string fileName)
{
if (string.IsNullOrWhiteSpace(fileName)) return false;


var ext = Path.GetExtension(fileName.ToLowerInvariant());
return _toFilter.Contains(ext);
}


public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var files = filterContext.HttpContext.Request.Files;
foreach (string file in files)
{
var postedFile = files[file];
if (postedFile == null || postedFile.ContentLength == 0) continue;


if (!CanUpload(postedFile.FileName))
{
//var result = new JsonResult();
//result.Data = ((ViewResult) filterContext.Result).Model;
//filterContext.Result = result;


filterContext.Result = new RedirectResult("Group/Uploade");


throw new InvalidOperationException(
string.Format("You are not allowed to upload {0} file. Please upload only these files: {1}.",
Path.GetFileName(postedFile.FileName),
_extensionsWhiteList));
}
}


base.OnActionExecuting(filterContext);
}
}
تکه کد بالا درست کار می کنه.
ولی هنگام ارسال فایل غیر مجاز استثنایی مورد نظر رخداد و اکشن مربوطه اجرا نمیشه تا بنده پیغام مناسب را نمایش بدم.
برای نمایش پیغام در صورت ارسال فایل غیرمجاز چه کار باید انجام بدم؟