我正在尝试实现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中的项目,但是当验证码失败并导致网站爆炸时,此现在为空。我该怎么做才能解决这个问题?
谢谢。
答案 0 :(得分:1)
在你的帖子中你必须重新填充Viewbag.BagCategory,因为现在当模型无效时你将返回没有视图包的视图。
{
if (ModelState.IsValid)
{
db.ItemsOffered.Add(sell);
db.SaveChanges();
return RedirectToAction("Index");
}
////REPOULATE THE BagCategory HERE
return View(sell);
}