我创建了一个具有以下域实体的 asp.net 应用程序:
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; }
}
带视图模型
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)
最后在控制器中,我要将项目(如果它是由用户提供的)添加到集合中。
if(!this.ModelState.IsValid)
{
//Return the view with validation errors
}
主要问题
现在如果不给出项目名称的值,它会给我一个验证错误“名称字段是必需的”。但我只想删除此表单的项目对象属性的验证。我怎样才能做到这一点?