我是ASP.NET MVC3的新手,但我有大约4年的PHP框架经验。
我正在尝试构建一个MVC3 Web应用程序,但我在验证我的模型时遇到了问题。 这是一个测试控制器,向您展示我正在尝试的内容,但没有成功。
我正在尝试将值传递给控制器内的模型,但它并没有考虑参数。
我尝试使用modelstate.setmodelvalue,用于junk.sentence,但它保留了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);
}
答案 0 :(得分:1)
尝试从modelstate中删除它:
[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);
}
这假设您在视图中有一个相应的输入字段,该输入字段是使用某些Html帮助程序(例如EditorFor)生成的:
@Html.EditorFor(x => x.sentence)
或:
@Html.TextBoxFor(x => x.sentence)
答案 1 :(得分:0)
当模型错误添加到模型状态时,ModelState.IsValid返回false。 MVC验证模型上的属性,并在ModelState中为您创建错误列表。您必须从控制器操作中删除希望忽略的模型状态中的错误。然后,您可以更新模型上的实际值。 (Darin Dimitrov向您展示了这样做的一个例子)