0

У меня возникают проблемы с mvc2.Атрибуты DataAnnotation, не работающие в Asp.Net MVC2

Я использую Entity Framework как свой ORM. Я использовал генератор объектов POCO для создания объектов POCO. Я переместил сгенерированные объекты в отдельный проект. Я выполнил описанные здесь шаги (Tutorial). Это моя структура проекта

Sports.Data - Entity Frmework и доступ к данным

Sports.Entities - РоКо объекты, создаваемые и классы приятеля

Sports.Web - Веб-приложение

В Проект Sports.Entities Я создал классы приятелей для сгенерированных pocos.

Проблема, с которой я сталкиваюсь, заключается в том, что атрибуты игнорируются mvc. Проверка не работает, и правильный текст ярлыка не отображается. Вместо «Размер рубашки» отображается «ShirtSize».

Что я делаю неправильно?

Спасибо за любую помощь.

Вот код.

<div> 
    <%: Html.LabelFor(m => m.Player.ShirtSize)%> 
</div> 
<div class="editor-field"> 
    <%: Html.EditorFor(m => m.Player.ShirtSize) %> 
    <%: Html.ValidationMessageFor(m => m.Player.ShirtSize)%> 
<div> 

    namespace Sports.Entities 
{ 
    [MetadataType(typeof(PlayerMetadata))] 
    public partial class Player 
    { 
     public double PointsPerGame { 
      get { return (double) this.Points/this.MatchesPlayed; } 
     } 
    } 
    public class PlayerMetadata 
    { 
     [Required(AllowEmptyStrings = false, ErrorMessage = "First Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object FirstName { get; set; } 

     [Required(AllowEmptyStrings = false, ErrorMessage = "Last Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object LastName { get; set; } 

     [Required(ErrorMessage = "Shirt Size is required.")] 
     [EnumDataType(typeof(ShirtSizeEnum), ErrorMessage = "Shirt Size is invalid.")] 
     [DisplayName("Shirt Size")] 
     object ShirtSize { get; set; } 

     [Required(ErrorMessage = "Gender is required.")] 
     [EnumDataType(typeof(GenderEnum) , ErrorMessage = "Gender is invalid.")] 
     object Gender { get; set; } 

     [Required(AllowEmptyStrings = false , ErrorMessage = "Date of birth is required.")] 
     [DataType(DataType.Date)] 
     object DateOfBirth { get; set; } 
    } 
} 

ответ

1

Спасибо за ваш ответ. Я понял проблему. Свойства в классах друзей должны быть общедоступными. Все началось после того, как я опубликовал свойства.

public object ShirtSize { get; set; } 
0

Хм, код, который вы опубликовали, выглядит довольно прочным. Является ли ваше представление строго типизированным и наследует соответствующий класс?

Inherits="System.Web.Mvc.ViewPage(Of YourWebApp.Sports.Entities.Player) 

также, это может звучать как немой вопрос, но вы передавая населенную Player объект обратно к просмотру как при первом заселить вид и когда вы отправить его обратно? и, наконец, вы обязательно проверите

if ModelState.IsValid? 
Смежные вопросы