2013-03-18 3 views
1

Я создал приложение asp.net со следующими лицами домена:Asp.net MVC глубокая проверка

public class Person 
{ 
    [Required] 
    public string name { get; set; } 
    public string address { get; set; } 
    public ICollection<Item> ItemsPurchased { get; set;} 
} 

public class Item 
{ 
    [Required] 
    public string name { get; set; } 
    public int price { get; set; } 
} 

с ViewModel

public class PersonViewModel 
{ 
    public Person Entity { get; set; } 
    public Item ItemPurchased { get; set; } 
} 

Теперь у меня есть форма, которая просит ввести человека детали, а также приобретенные предметы (если они есть)

Html.Label("Person Name") 
Html.TextboxFor(model => model.Entity.name) 
Html.ValidationMessageFor(model => model.Entity.name) 


Html.Label("Item Name") 
Html.TextboxFor(model => model.ItemPurchased.name) 
Html.ValidationMessageFor(model => model.ItemPurchased.name) 


Html.Label("Item Price") 
Html.TextboxFor(model => model.ItemPurchased.Price) 
Html.ValidationMessageFor(model => model.ItemPurchased.Price) 

И, наконец, в диспетчере я собираюсь добавить товар (если он есть n пользователем) в коллекцию.

if(!this.ModelState.IsValid) 
{ 
    //Return the view with validation errors 
} 

Главная проблема

Теперь, если не дают значение имени элемента, он дает мне ошибку проверки «Поле имени требуется». Но я хочу удалить проверку атрибутов объектов объекта только для этой формы. Как я могу это сделать?

ответ

3

Необходимо использовать модель представления. Модели просмотра - это классы, специально разработанные для соответствия требованиям представления. В этом представлении у вас, похоже, есть требование, чтобы имя не требовалось. Поэтому дизайн вид модели:

public class EditItemViewModel 
{ 
    public string name { get; set; } 
    public int price { get; set; } 
} 

и:

public class EditPersonViewModel 
{ 
    public Person Entity { get; set; } 
    public EditItemViewModel ItemPurchased { get; set; } 
} 

и вы хорошо идти. name больше не потребуется для этой формы.

Также я бы рекомендовал вам проверить AutoMapper, что может значительно упростить сопоставление между вашими моделями домена и вашими моделями просмотров.

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