And*_*yev 2 validation asp.net-mvc modelstate asp.net-mvc-2
我有这个控制器的创建方法
[HttpPost]
public ActionResult Create(Topic topic)
{
if (ModelState.IsValid)
{
topicRepo.Add(topic);
topicRepo.Save();
return RedirectToAction("Details", new { id = topic.ID });
}
return View(topic);
}
Run Code Online (Sandbox Code Playgroud)
这个用于编辑
[HttpPost]
public ActionResult Edit(int id, FormCollection formCollection)
{
Topic topic = topicRepo.getTopic(id);
if (ModelState.IsValid)
{
UpdateModel<Topic>(topic);
topicRepo.Save();
return RedirectToAction("Details", new { id = topic.ID });
}
return View(topic);
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都使用公共部分页面(.ascx).
当我尝试创建主题但在我尝试编辑主题时不起作用时验证有效
这很正常.在第一个示例中,您使用模型作为操作参数.当默认模型绑定器尝试从请求绑定此模型时,它将自动调用验证,当您输入操作时,ModelState.IsValid已经分配了该模型.
在第二个示例中,您的操作不采用任何模型,只采用键/值集合而没有模型验证没有意义.验证是由触发UpdateModel<TModel>这在你的例子方法被调用后的ModelState.IsValid调用.
所以你可以试试这个:
[HttpPost]
public ActionResult Edit(int id)
{
Topic topic = topicRepo.getTopic(id);
UpdateModel<Topic>(topic);
if (ModelState.IsValid)
{
topicRepo.Save();
return RedirectToAction("Details", new { id = topic.ID });
}
return View(topic);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7001 次 |
| 最近记录: |