У меня есть класс .NET 2.0, свойства которого помечены как виртуальные. Мне нужно использовать этот класс в качестве модели в приложении MVC2. Итак, я создал класс .NET 3.5, унаследованный от класса .NET 2.0, и добавил атрибуты DataAnnotations в переопределенные свойства нового класса. Фрагмент того, что я сделал, ниже
// .NET 2.0 class
public class Customer
{
private string _firstName = "";
public virtual string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
}
// .NET 3.5 class
public class MVCCustomer : Customer
{
[Required(ErrorMessage="Firstname is required")]
public override string FirstName
{
get { return base.FirstName; }
set { base.FirstName = value; }
}
}
Я использовал класс в качестве модели для представления MVC2 с помощью помощников HtmlFor. Проверка на стороне сервера работает правильно, а проверка на стороне клиента - нет. В частности, ошибка проверки не отображается на странице.
Чего мне не хватает, или это возможно сделать только с помощью приятелей.
Спасибо.
РЕДАКТИРОВАТЬ 1:
Сейчас я попробовал это с классами проверки друзей, и это тоже не работает.
РЕДАКТИРОВАТЬ 2:
Теперь я понял, что лямбда-выражение, предоставленное помощникам HtmlFor, вызывает проблему. Например,
Html.TextBoxFor (m => m.FirstName) вызывает метод ModelMetadata.FromLambdaExpression, который оценивает DeclaringType для MemberExpression (expression.Body) как класс Customer, а не класс MVCCustomer.
Я пытался изменить лямбда-выражение на Html.TextBoxFor ((MVCCustomer m) => m.FirstName), но DeclaringType по-прежнему является Customer.
Есть ли способ, которым я могу получить DeclaringType типа MVCCustomer, а не Customer.