Ваш пример выше работает хорошо для меня. Интересно - это был точный пример или он был упрощен от реальной проблемы? Я нашел это точное поведение при использовании модели с вложенными свойствами.
Так, например, если я изменю вашу модель, чтобы она выглядела следующим образом:
public class MyModelObject
{
[Required(ErrorMessage = "Foo")]
[DataType(DataType.MultilineText)]
public string Message { get; set; }
}
public class MyModel
{
public MyModelObject MyObject { get; set; }
}
Тогда я воспроизвожу именно ту проблему, которую вы упомянули.
@Html.EditorFor(x => x.MyObject.Message)
генерирует атрибуты проверки jquery, как и ожидалось:
<textarea class="text-box multi-line input-validation-error" data-val="true" data-val-required="Foo" id="MyObject_Message" name="MyObject.Message"></textarea>
Но это:
@Html.TextAreaFor(x => x.MyObject.Message)
Не:
<textarea cols="20" id="MyObject_Message" name="MyObject.Message" rows="2"></textarea>
Если это действительно описывает вашу проблему, похоже, что это было сообщено как ошибка:
http://aspnet.codeplex.com/workitem/8576