我一直在开发这个 MVC 3 Razor 应用程序,并且通常将视图模型用于我的视图。
我的相当多的视图模型包含的信息不仅仅是我在表单中与之交互的特定实体。因此,我的 GET 操作处理程序将初始化视图模型并为每个属性提供预期值等。
在我的 POST 操作处理程序中,我检查模型状态是否有效,如果无效,我会重新显示带有错误的表单/视图。
在我的 POST 操作处理程序中,我发现自己必须从 GET 操作处理程序复制代码才能再次重新渲染视图。如何实现控制器操作,以便不必复制负责收集视图模型数据的代码?
我尝试让我的操作处理程序同时处理 POST 和 GET,但随后我需要处理输入参数。我的 POST 操作处理程序将视图模型作为输入参数,但 GET 操作处理程序不会。
您的 POST 处理程序可以从 GET 处理程序返回 ActionResult,如下所示:
public ActionResult SomePageGet() {
var model = new SomePageViewModel();
// Populate ViewModel:
...
return View("SomePageGet", model);
}
[HttpPost]
public ActionResult SomePagePost(SomePageViewModel input) {
// Validate the model:
...
if (!ModelState.IsValid) {
// Return the GET page, with error messages:
return SomePageGet();
}
return View("Success");
}
由于 ModelState 保存所有错误消息(和无效输入),因此 GET 页面将正常显示它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)