我是ASP.NET MVC3的新手,但我有大约4年的使用pretty的经验。
我正在尝试构建一个MVC3 web应用程序,但我在验证我的模型时遇到了问题。这是一个测试控制器,向你展示我正在尝试做但没有成功的事情。
我试图将一个值传递给控制器内部的模型,但它没有将其考虑在内。
我尝试为junk.sentence使用modelstate.setmodelvalue,但它保留了POST请求中的值,该值是无效的,并且我想在控制器中默认更改该值(出于测试目的)。
有人能帮上忙吗?
提前谢谢。
迈克尔
[HttpPost]
public ActionResult Create(Junk junk)
{
//ModelState.Clear();
junk.sentence = "coucou";
ModelState.SetModelValue("sentence", new ValueProviderResult(junk.sentence, junk.number, null));
//ModelState
if (ModelState.IsValid)
{
db.Junks.Add(junk);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(junk);
}
//
// GET: /Junk/Edit/5
public ActionResult Edit(int id)
{
Junk junk = db.Junks.Find(id);
return View(junk);
}
发布于 2012-02-24 15:17:29
尝试将其从模型状态中删除:
[HttpPost]
public ActionResult Create(Junk junk)
{
junk.sentence = "coucou";
//ModelState
if (ModelState.IsValid)
{
db.Junks.Add(junk);
db.SaveChanges();
return RedirectToAction("Index");
}
ModelState.Remove("sentence");
return View(junk);
}
这假设在您的视图中有一个相应的输入字段,该字段是使用一些helpers (例如EditorFor )生成的:
@Html.EditorFor(x => x.sentence)
或者:
@Html.TextBoxFor(x => x.sentence)
发布于 2012-02-24 15:20:57
当模型状态中添加了模型错误时,ModelState.IsValid将返回false。MVC验证模型上的属性,并在ModelState中为您创建一个错误列表。您必须从模型状态中删除您希望从控制器操作中忽略的错误。然后,您可以更新模型上的实际值。(Darin Dimitrov向你展示了一个这样做的例子)
https://stackoverflow.com/questions/9433074
复制相似问题