在我的控制器中,我有以下代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(AdEntry adentry)
{
adentry.adDate = DateTime.Now;
adentry.adExpirationDate = DateTime.Now.AddDays(32);
adentry.adConfirmationID = rKeyGen(8);
if (ModelState.IsValid)
{
db.Items.Add(adentry);
db.SaveChanges();
TempData["Summary"] = adentry;
return RedirectToAction("Index");
}
return View(adentry);
}
在我的模型中,我有这个属性:
[Required(ErrorMessage = "Confirmation Id is Required.")]
[StringLength(8, ErrorMessage = "{0} is too long.")]
public virtual String adConfirmationID { get; set; }
当我尝试创建一个新的Item ModelState.IsValid = false时。我得到的错误是需要Confiramtion Id。我将adConfirmationID =设置为支票上方的值。我怎样才能通过这项检查?
答案 0 :(得分:0)
请改为尝试:
ModelState.Remove("adConfirmationID")
在检查ModelState.IsValid
这将解决您的问题。
答案 1 :(得分:0)
有两种方法可以解决此问题,一种是通过此方法从ModelState中删除更新的/无效的字段
ModelState.Remove("foo");
或者您必须使用隐藏字段将值从View传递给控制器
<input type="hidden" asp-for="foo"/>