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")]
我不明白這一點,因爲我想添加一個狗在那裏。