我有一个表单我想提交并使用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)
。
答案 0 :(得分:0)
如果尚未设置ID,则需要更改
public int Id { get; set; }
到
public int? Id {get;set;}
使模型准确地表示数据并通过验证。
如果始终在此视图之前设置并且未通过,则需要将其放入
@Html.HiddenFor(x => x.Id)
表格标签内的