2013-07-17 5 views
1

У меня есть класс, который содержитValidationMessageFor свойства только для чтения, или один ValidationMessageFor два свойства

[Required] 
public string FirstName { get; set; } 
[Required] 
public string LastName { get; set; } 

public string FullName { 
    get { 
     return this.FirstName + " " + this.LastName; 
    } 
} 

Можно ли иметь Html.ValidationMessageFor FullName, или некоторые пользовательские сообщения проверки, которая появляется, когда либо FirstName или LastName пусто?

UPDATE

Это то, что я хочу.

  1. Выходите оба названия пустые: Full name is required.
  2. Выходите ПгвЬЫате пустым: Full name is required.
  3. Выходите LastName пустым: Full name is required.
+0

Но технически вы не будете использовать его в поле зрения. Предполагаю, чтобы показать сообщение о проверке, пожалуйста, добавьте более подробную информацию, если я ошибаюсь. – ssilas777

ответ

1

Вы можете сделать следующее (я надеюсь, что я не неправильно вы:

[Required(ErrorMessage="Yo fill this up please"] 
public string FirstName { get; set; } 

EDIT

В случае, если у вас есть немного более конкретные требования проверки вы можете реализовать IValidateObject через вашу модель, что-то вроде:

public class Person : IValidatableObject 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public string FullName 
    { 
     get { return string.Format("{0} {1}", FirstName, LastName); } 
    } 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (string.IsNullOrEmpty(FirstName) || string.IsNullOrEmpty(LastName)) 
     { 
      yield return new ValidationResult("The full name is required."); 
     } 
    } 
} 

Тогда в вашем контроллере ваш ModelState будет указывать, если введено недопустимое:

[HttpPost] 
public ActionResult Create(Person person) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(); 
    } 

    // do your stuff here ... 
} 

И, конечно же, по вашему мнению, вы можете получить сообщения проверки через ValidationSummary:

@Html.ValidationSummary(true) 

Надеюсь, это поможет.

+0

Нет, это то, что я хочу. A) Вы оставляете оба имени пустым: 'Полное имя не требуется. 'B) Вы оставляете FirstName пустым:' Полное имя обязательное.' C) Вы оставляете LastName пустым: 'Полное имя не требуется. ' – Andrew

+0

@Andrew проверить мои изменения, может быть то, что вы ищете. –

+0

Да, это действительно так! Теперь, заменит ли все остальные значения ValidationResults по умолчанию, или просто добавит это в список? – Andrew

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