我要求在文本框中验证用户输入。每当输入html标签时,它应该显示相同的视图,其中包含友好的错误消息,例如“无法输入html标签。”
到目前为止,我尝试过的方法是:
[RegularExpression ( "<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>",ErrorMessage = "You have entered html…Html is not a valid input!" )]
任何人都有这个问题。如果是,请告诉我,你是如何解决的。
谢谢
答案 0 :(得分:3)
您可以使用[AllowHtml]
属性:
[AllowHtml]
[RegularExpression (@"^[^<>]*$", ErrorMessage = "You have entered html... Html is not a valid input!" )]
public string SomePropertyThatShouldNotAcceptHtml { get; set; }
显然,在存储到数据库之前,您应该确保内容是安全的:
[HttpPost]
public ActionResult Save(MyViewModel model)
{
if (!ModelState.IsValid)
{
// the model is invalid => redisplay view
return View(model);
}
// the model passed validation => store in the database
...
return RedirectToAction("Success");
}
如果您害怕XSS,可以使用AntiXSS library来过滤掉HTML中的所有危险脚本。您甚至可以编写一个自定义模型绑定器来执行此步骤,并自动仅为该属性分配安全HTML值。
答案 1 :(得分:0)
早上好,这似乎是一个很好的起点,能够满足您的要求。看看这个article。
答案 2 :(得分:0)
现在通过显示友好的错误消息来工作。我通过在Post Action控制器中添加Validateinput标签来改变了一点。
我必须在ViewModel
中添加它[AllowHtml]
[RegularExpression (@"^[^<>]*$", ErrorMessage = "You have entered html... Html is not a valid input!" )]
public string SomePropertyThatShouldNotAcceptHtml { get; set; }
在动作控制器中
我必须在帖子事件中添加标签
[Validateinput(false)]
感谢达林。