2011-12-14 2 views
0

у меня есть класс модели:Validation в ASP.MVC 3,0

public class YearlyChageRate 
{ 
    public int Year { get; set; } 
    public double Rate { get; set; } 
} 

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

+0

Где вы хотите эту проверку? Что означает, что год уникален? Уникальный где? В базе данных или что-то еще? –

+0

Да, уникально в базе данных, я хочу проверить серверную сторону и показать сообщение пользователю. – Shayan

ответ

1

Вот хороший пример: http://tugberkugurlu.com/archive/asp-net-mvc-remote-validation-for-multiple-fields-with-additionalfields-property

И здесь тоже: MVC validation for unique

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

Это официальный пример удаленного атрибута: http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

И еще один: http://www.a2zdotnet.com/View.aspx?Id=198

1

Вы можете использовать атрибут проверки [Remote] на вашей модели просмотра.

+0

Спасибо за ваш ответ – Shayan

1

Хотя вы можете использовать DataAnnotations атрибуты для проверки и атрибут [Remote] для проверки против БД, это не очень хороший дизайн выбор.

Пояснит:

  • доступа к данным является данными слоя материя
  • проверки является бизнес-слой дела
  • пользовательского ввода и обратная связь является пользовательским интерфейсом дела

С DataAnnotations, вы mixin 3 в 1. Это может быть быстрее, но, безусловно, плохо спроектировано.

Вы можете попробовать более disciplinate подход, как это:

  • есть метод на уровне бизнеса, который будет принимать ваш объект в качестве параметра, выполнять проверку внутри с помощью рамки проверки вашего choiche;
  • Этот метод вызовет доступ к данным для сохранения объекта только в том случае, если проверка прошла;
  • Этот метод всегда будет возвращать UI проверенный объект плюс набор полей/ошибок, если что-то не подтвердилось;
  • Когда вы читаете выходные данные метода в своем ui, вы можете либо отобразить страницу успеха, если не было ошибок, либо повторно отобразить форму с возвращенными ошибками проверки. Для этого настоятельно рекомендуется использовать PRG pattern, так как вы никогда не должны показывать страницу по методу POST. Google для PRG pattern, чтобы узнать больше об этом. MvcContrib имеет приятный ActionFilter под названием ModelStateToTempData, чтобы сделать реализацию шаблона PRG чем-то тривиальным.
Смежные вопросы