c#mvc和EF - 有效模型返回无效

时间:2016-10-31 17:41:24

标签: asp.net-mvc entity-framework

我有一个表单我想提交并使用EF保存数据,但即使提交后所有字段都填写正确,它仍然会输入invalid条件。我认为它与Id列有关,当填写其他字段时,它显示为0

页数据模型:

public class PagesVM
{

    public PagesVM()
    {
    }

    public PagesVM(PagesDTO pagesDTO)
    {
        Id = pagesDTO.Id;
        Title = pagesDTO.Title;
        Slug = pagesDTO.Slug;
        Body = pagesDTO.Body;
    }

    public int Id { get; set; }
    [Required]
    [StringLength(50, MinimumLength = 3)]
    public string Title { get; set; }
    [Required]
    [StringLength(50, MinimumLength = 3)]
    public string Slug { get; set; }
    [Required]
    [StringLength(100, MinimumLength = 3)]
    public string Body { get; set; }
}

发布行动:

[HttpPost]
[ActionName("add-page")]
public ActionResult AddPage(PagesVM pagesVM)
{
    if (! ModelState.IsValid)
    {
        return View("AddPage", pagesVM);
    }

    using (Db db = new Db())
    {
        PagesDTO pagesDTO = new PagesDTO();
        pagesDTO.Title = pagesVM.Title;
        pagesDTO.Slug = pagesVM.Slug;
        pagesDTO.Body = pagesVM.Body;

        db.SaveChanges();
    }

    ViewBag.SM = "You have added a new page!";

    return View("AddPage");
}

因此,无论表单是否填写正确,它都会始终进入if (! ModelState.IsValid)

1 个答案:

答案 0 :(得分:0)

如果尚未设置ID,则需要更改

public int Id { get; set; }

public int? Id {get;set;}

使模型准确地表示数据并通过验证。

如果始终在此视图之前设置并且未通过,则需要将其放入

@Html.HiddenFor(x => x.Id) 
表格标签内的