繁体   English   中英

asp.net mvc的客户端验证“一个有潜在危险的Request.Form ......

[英]client side validation for asp.net mvc “A potentially dangerous Request.Form…

我想如何在asp.net mvc中为潜在危险的request.form实现客户端验证。

在这种情况下,我不想设置[ValidateInput(false)] ,并且向用户显示此错误消息页面不是用户友好的。 类似于[Required]属性为客户端验证所做的事情。

我认为这有一个内置功能,因为它似乎是我常见的问题,但似乎我无法找到它。

您可以通过重写DefaultModelBinder.BindModel方法在模型绑定期间捕获HttpRequestValidationException

public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        try
        {
            return base.BindModel(controllerContext, bindingContext);
        }
        catch (HttpRequestValidationException)
        {
            bindingContext.ModelState.AddModelError(bindingContext.ModelName, "Illegal Html characters...");
            return null;
        }
    }

在控制器操作中,您现在可以检查模型是否无效并根据需要重新显示视图。 jQuery不引人注目的验证应该照顾其余部分。

    [HttpPost]
    public virtual ActionResult Edit(ViewModel model)
    {
        if (!ModelState.IsValid)
        {                               
            return View(model);
        }
    }

如果您还没有自定义DefaultModelBinder ,则必须确保在应用程序启动时注册它。

ModelBinders.Binders.DefaultBinder = new CustomDefaultModelBinder();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM