验证失败时MVC Captcha ViewBag null(ModelState.IsValid)

时间:2014-05-06 22:54:09

标签: asp.net-mvc

我正在尝试实现Captcha,并且我注意到当modelstate评估为无效时,我的页面错误消息显示我的所有viewbag.items现在都为null。知道如何解决这个问题吗?

所以我有一个控制器,可以向我的视图发送多个视图包。例如:

public ActionResult Create()
{

...(code shortened)...
var IVariable = from i in db.SomeTable
       select i;           

foreach (var x in IVariable)
            {
                BagCategory.Add(x.ArmyCategory);
            }           
Viewbag.BagCategory = BagCategory  

}

POST方法如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
[CaptchaValidation("CaptchaCode", "SampleCaptcha", "Incorrect CAPTCHA code!")]
        public ActionResult Create([Bind(Include="ID,ItemName,Price,ArmyCategory,Race,Company,PictureLink,Notes,EmailAddress")] Sell sell)
        {
                    if (ModelState.IsValid)
                    {
                        db.ItemsOffered.Add(sell);
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }

            return View(sell);
        }

在我看来,我浏览了viewbag.BagCategory中的项目,但是当验证码失败并导致网站爆炸时,此现在为空。我该怎么做才能解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

在你的帖子中你必须重新填充Viewbag.BagCategory,因为现在当模型无效时你将返回没有视图包的视图。

    {
                if (ModelState.IsValid)
                {
                    db.ItemsOffered.Add(sell);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
        ////REPOULATE THE BagCategory  HERE

        return View(sell);
    }
相关问题