2011-02-06 3 views
0

Сейчас я работаю над формой, позволяющей пользователю публиковать контент, я хочу использовать редактор WMD, поэтому в моем Entity Framework модель У меня сложный тип с именем Content, он содержит поля HTML и WMD.Ошибка проверки ASP.NET MVC 3 не срабатывает, когда сложный тип используется в Entity Framework

В форме есть текстовое поле для заголовка, и ОМП редактор для Content, я использовал рамку FluentValidation, следующим образом:

public class ArticleValidator : AbstractValidator<Article> 
{ 
    public ArticleValidator() 
    { 
     RuleFor(x => x.Title).NotEmpty(); 
     RuleFor(x => x.Content.WMD).NotEmpty(); 
    } 
} 

Когда я представить эту форму, не вводя ничего, в клиент- боковая проверка только улавливает заголовок как недействительный. Если я ввожу что-то в Title, форма отправляется (хотя содержимое пусто), тогда ошибка попадает на серверную сторону (пустой контент), страница затем перезагружается с введенной мной информацией, но не появляется сообщение об ошибке .

Кажется, что сложный тип, созданный в модели Entity Framework, вызывает эту проблему. Раньше у меня были отдельные свойства для ContentHtml и ContentWMD, и он отлично работал.

Есть ли обходной путь к этому, не возвращаясь обратно туда, где я был?

ответ

0

Вы не можете использовать вложенное определение правила, как это:

RuleFor(x => x.Content.WMD).NotEmpty(); 

Вы должны иметь другой валидатор для содержимого типа:

public class ArticleValidator : AbstractValidator<Content> 
{ 
    public ArticleValidator() 
    { 
     RuleFor(x => x.WMD).NotEmpty(); 
    } 
} 

Это, как говорится, вы не должны использовать модели EF внутри ваших взглядов , Вы должны использовать View Models и определить правила проверки на вашей модели вида:

public class ArticleValidator : AbstractValidator<ArticleViewModel> 
{ 
    public ArticleValidator() 
    { 
     RuleFor(x => x.Title).NotEmpty(); 
     RuleFor(x => x.Content).NotEmpty();   
    } 
} 
+0

спасибо Дарин! что сработало – wliao

 Смежные вопросы

  • Нет связанных вопросов^_^