我有一个用户输入各种值的表单,然后用户发送查询并处理搜索结果。
这很简单,但问题是这样的。
在 MVC 中,如果表单有错误,要在服务器上进行验证,应该再次显示错误的表单。但是如果我将请求发送到数据搜索操作,我应该返回一个重定向到咨询操作表单,这将丢失验证消息。
目前我们所做的是将数据请求到咨询表单的操作,然后如果一切正常,我们将操作结果重定向到使用 tempdata 发送请求数据。
这种情况有没有更好的方法?
我有一个用户输入各种值的表单,然后用户发送查询并处理搜索结果。
这很简单,但问题是这样的。
在 MVC 中,如果表单有错误,要在服务器上进行验证,应该再次显示错误的表单。但是如果我将请求发送到数据搜索操作,我应该返回一个重定向到咨询操作表单,这将丢失验证消息。
目前我们所做的是将数据请求到咨询表单的操作,然后如果一切正常,我们将操作结果重定向到使用 tempdata 发送请求数据。
这种情况有没有更好的方法?
如果我理解正确,PRG 模式应该适用于您的情况。在后期操作中,如果模型状态无效,则重定向回咨询表,否则继续搜索操作。过滤器将内部保存临时数据中的错误。
返回View(model)
验证错误或RedirectToAction()
取决于 ModelState:
ActionResult Consult(@params) {
if (ModelState.IsValid) {
//validation succeeded.
return RedirectToAction("SearchResults", {searchParams = @params});
}
return View(@params);
}
重点是,您可以在重定向时传递参数。