我可以更新ModelState.IsValid吗?

时间:2013-09-18 16:50:04

标签: asp.net-mvc

在我的控制器中,我有以下代码:

    [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 =设置为支票上方的值。我怎样才能通过这项检查?

2 个答案:

答案 0 :(得分:0)

请改为尝试:

ModelState.Remove("adConfirmationID")

在检查ModelState.IsValid

之前放置此代码

这将解决您的问题。

答案 1 :(得分:0)

有两种方法可以解决此问题,一种是通过此方法从ModelState中删除更新的/无效的字段

ModelState.Remove("foo");

或者您必须使用隐藏字段将值从View传递给控制器​​

 <input type="hidden" asp-for="foo"/>
相关问题