2016/03/19

[筆記] 用 jQuery 批次下載網頁上的圖片

上次在某個 fb 社團看到分享使用 jQuery 下載全部圖片

但裡面除了教你  include jQuery 之外都是用原生的 javascript 功能, 寫起來有點長

倒是學到如果網站沒有 jQuery 要怎麼幫他裝 jQuery XDDDD

來寫寫看全部都用 jQuery 下載圖片的寫法

2016/03/18

[筆記] ASP.Net MVC 使用 ActionFilter 驗證 ModelState

利用 MVC 的 Model binding 時都要檢查 ModelState 是否有正確

  1. if (!ModelState.IsValid) return new HttpStatusCodeResult(HttpStatusCode.BadRequest)


但每個 Action 都要記得這樣檢查實在是太累了 (而且有些人會忘記....)

所以直接做成 Filter 讓每個 request 都會執行這樣~

  1. public class ModelStateValidationFilter : System.Web.Mvc.ActionFilterAttribute
  2. {
  3. public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
  4. {
  5. if (!filterContext.Controller.ViewData.ModelState.IsValid)
  6. {
  7. var errors = from errs in (
  8. from modelstate in filterContext.Controller.ViewData.ModelState.Values
  9. select modelstate.Errors
  10. )
  11. where errs.Count > 0
  12. select errs[0].ErrorMessage;
  13. // 用 Elmah 記錄誰在哪邊沒通過驗證
  14. Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(String.Join(",",errors.ToArray())));
  15. // 回應錯誤
  16. throw new HttpException(400);
  17. }
  18. }
  19. }


寫好之後要在 FilterConfig 中加入

  1. filters.Add(new ModelStateValidationFilter());

目前在寫的系統是用 Ajax From, 所以直接拋錯誤回去就可以 (讓 js 接手 on fail)

如果是重讀整個頁面的這樣就會直接讓 user 看到錯誤了~