显示友好错误消息在文本Box-MVC ASP.NET中输入Html标记时

时间:2011-09-12 14:46:42

标签: asp.net-mvc-3

我要求在文本框中验证用户输入。每当输入html标签时,它应该显示相同的视图,其中包含友好的错误消息,例如“无法输入html标签。”

到目前为止,我尝试过的方法是:

    控制器上的
  1. [ValidateInput(true)] - 它出现错误“潜在危险请求”
  2. 控制器上的
  3. [ValidateInput(false)] - 它将值存储在数据库中 - (我不希望这样)
  4. 在视图模型中,我为属性[RegularExpression ( "<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>",ErrorMessage = "You have entered html…Html is not a valid input!" )]
  5. 放置了一个标记

    任何人都有这个问题。如果是,请告诉我,你是如何解决的。

    谢谢

3 个答案:

答案 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)]

感谢达林。