В моем блоге я храню URI для сущностей, чтобы они могли быть настроены (и понятны). Первоначально они могли содержать пробелы (например, "/tags/ASP.NET MVC"), но проверка W3C говорит, что пробелы недопустимы.
Класс System.Uri
занимает пробелы и, кажется, кодирует их так, как я хочу (например, /tags/ASP.NET MVC
становится /tags/ASP.NET%20MVC
), но я не хочу создавать Uri
просто для того, чтобы выбросить его, это чувствует себя грязным!
Примечание. Ни один из Html.Encode
, Html.AttributeEncode
и Url.Encode
не будет кодировать "/tags/ASP.NET MVC"
до "/tags/ASP.NET%20MVC"
.
Редактировать: Я отредактировал часть DataType
из своего вопроса, поскольку выясняется, что DataType напрямую не предоставляет никакой проверки, и нет встроенной проверки URI. Я нашел несколько дополнительных валидаторов на dataannotationsextensions.org , но он поддерживает только абсолютные URI и, похоже, пробелы могут быть там действительными.