2

我正在使用 Code First 学习 asp.net mvc....

我有一个名为 Livro 的课程:

这是它的代码

    public class Livro
    {

    [Key]
    public int LivroId { get; set; }

    [Required(ErrorMessage = "E necessario titulo")]
    [MaxLength(100, ErrorMessage = "Titulo deve ter no maximo 100 caracteres")]
    public string Titulo { get; set; }


    public int AutorID { get; set; }

    public virtual Autor Autor { get; set; }
  }

如您所见,它有一个名为 Navigation 的属性和一个名为 的AutorFK AutorId。但是我在Livro控制器上有这段代码(我没有写这段代码,VS 创建的不是我的类)。

    [HttpPost]
    public ActionResult Create(Livro livro)
    {
        if (ModelState.IsValid)
        {
            db.Livros.Add(livro);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.AutorID = new SelectList(db.Autores, "AutorId", "Nome", livro.AutorID);
        return View(livro);
    }

如果我有[Required]Autor属性,则modelState.IsValid变为 false 因为livro.Autornull。所以我必须把它拿出来。

但我正在阅读 Julia Lerman 的一本书,它名为“Programming EF Code-First”,有时还有带有该属性的导航[Required]属性。

我在这里想念什么?

4

1 回答 1

0

这可能是因为 View 仅引用Livro字段,而不是Autor模型绑定器无法创建Autor导航属性。Autor您可以像这样使用 smth为 , 创建字段:

@Html.TextBoxFor(m => m.Autor.AutorID);
@Html.TextBoxFor(m => m.Autor.AutorName);

但是,这会变得很痛苦,也许您只需要从列表中选择作者即可。我只会将Required属性添加到属性中Livro.AutorID并保持Autor原样。

于 2013-01-31T23:54:54.353 回答