Во-первых, вам необходимо отключить действие проверки для вас с атрибутом [ValidateInput (false)], но вам нужно будет использовать его осторожно, так как это отключит проверку для всего метода.Вы также можете отключить проверку для определенного атрибута, например:
[Required]
[AllowHtml]
Public string article { get; set; }
ASP.NET MVC3 имеет встроенный атрибут для отключения проверки на уровне свойств - поэтому добавление атрибута [AllowHtml] для свойств в модели или модели представления будетотключить проверку запроса.Это небезопасно и подвергает ваш сайт риску.Теперь вам нужно убедиться, что предоставлен правильный формат данных, так что вы можете не попробовать Regular Expressions отфильтровать весь HTML-код, кроме необходимых вам тегов.Возможно, вы не захотите взглянуть на этот ответ Regex, чтобы соответствовать всем тегам HTML, за исключением и
, чтобы вы могли продолжить работу.пример из msdn о том, как использовать проверку регулярных выражений с аннотациями данных:
public class Customer
{
[Required]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$",
ErrorMessage="Numbers and special characters are not allowed in the last name.")]
public string LastName { get; set; }
}
http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.regularexpressionattribute(v=vs.95).aspx
, вы также можете попробовать более безопасный способ - реализовать функцию, подобную BBCode.Поэтому вместо HTML-тегов вы используете псевдо-HTML-теги, такие как [b] вместо
, это легко сделать с помощью jQuery:
при условии, что #text - это поле, заполненное кодом bbcode, например, текстом(не видно), а text2 - это отформатированный дисплей - видимый:
$(document).ready(function(){
var text = $('#text').html();
text = text.replace("[b]","<b>");
text = text.replace("[/b]","</b>");
$('#text2').html(text);
});
Это не самый умный код, но он быстро показал вам направление, в котором вы можете выбрать.