2013-05-06 88 views
0

我正在構建我的第一個ASP.NET應用程序,而且我正在使用實體框架。ASP.NET MVC必需DataAnnotation

我有兩個類:

public class Owner 
{ 
    public int ID { get; set; } 
    [Required(ErrorMessage="Empty Owner name")] 
    [MaxLength(10,ErrorMessage="Up to 10 chars")] 
    [Display(Name="Owners name")] 
    public string Name { get; set; } 
    public DateTime Born { get; set; } 
    public virtual List<Dog> dogs { get; set; } 
} 
public class Dog 
{ 
    public int ID { get; set; } 
    [Required(ErrorMessage="Empty dog name")] 
    [MaxLength(10,ErrorMessage="Up to 10 chars")] 
    [Display(Name="Dogs name")] 
    public string Name { get; set; } 
    public virtual Owner owner { get; set; } 
} 

我可以添加業主數據庫,但我不能添加的狗。 我使用一個文本框和列表框的視圖,如:

@using (Html.BeginForm("New", "Dog")) 
{ 
    @Html.LabelFor(x => x.Name); 
    @Html.TextBoxFor(x => x.Name); 
    <br /> 
    @Html.ListBoxFor(x => x.owner.ID, new MvcApplication2.Models.GazdiKutyaDB().GetOwners()); 
    <br /> 
    <input type="submit" /> 
} 

我創建了一個GetOwners方法對現有車主添加到列表框,併爲用戶,選擇誰是狗的主人。

public List<SelectListItem> GetOwners() 
{ 
    List<SelectListItem> g = new List<SelectListItem>(); 
    foreach (Owner item in owners) 
    { 
     SelectListItem sli = new SelectListItem(); 
     sli.Text = item.Name; 
     sli.Value = item.ID.ToString(); 
     g.Add(sli); 
    } 
    return g; 
} 

我爲狗創建了一個控制器。這是我加入方法:

[HttpGet] 
public ActionResult New() 
{    
    return View(); 
} 
[HttpPost] 
public ActionResult New(Dog k) 
{ 
    if (ModelState.IsValid) 
    { 
      k.owner = (from x in db.owners 
         where x.ID == k.owner.ID 
         select x).FirstOrDefault(); 
      db.dogs.Add(k); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Dog"); 
    } 
    else 
    { 
      return View(k); 
    } 
} 

我插入斷點,爲什麼ModelState.IsValid是假的原因,是業主名稱爲空:[Required(ErrorMessage="Empty Owner name")]我不明白這一點,因爲我想添加一個狗在那裏。

回答

相關問題