如果我的中有错误,如何返回不同操作的结果或将用户移动到不同的操作
而不会失去我的
信息?
场景是;
操作接受来自删除表单的POST,该表单由我的
操作/视图。如果
我希望将用户移回
操作/视图,并显示由
中的操作
..。如何在ASP.NET MVC中做到这一点?
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Delete)]
public ActionResult Delete([ModelBinder(typeof(RdfUriBinder))] RdfUri graphUri)
{
if (!ModelState.IsValid)
return Index(); //this needs to be replaced with something that works :)
return RedirectToAction("Index");
}发布于 2008-11-11 01:16:34
将视图数据存储在
并在您的
操作,如果存在的话。
...
if (!ModelState.IsValid)
TempData["ViewData"] = ViewData;
RedirectToAction( "Index" );
}
public ActionResult Index()
{
if (TempData["ViewData"] != null)
{
ViewData = (ViewDataDictionary)TempData["ViewData"];
}
...
}编辑
我查看了MVC的在线源代码,发现
控制器中的属性是可设置的,因此最简单的方法可能就是将所有
,包括
,添加到索引操作。
发布于 2009-04-22 08:03:23
使用动作过滤器(PRG模式)(和使用属性一样简单)
提到过
这里
和
这里
..。
发布于 2008-11-11 19:42:37
请注意,tvanfosson的解决方案并不总是有效的,尽管在大多数情况下它应该是好的。
该特定解决方案的问题在于,如果您已经有任何ViewData或ModelState,则最终会使用前一个请求的状态将其全部覆盖。例如,新请求可能有一些与传递给操作的无效参数相关的模型状态错误,但这些错误最终会被隐藏,因为它们被覆盖了。
它可能无法按预期工作的另一种情况是,如果您有一个初始化了一些ViewData或ModelState错误的操作筛选器。同样,它们将被该代码覆盖。
我们正在寻找一些ASP.NET MVC的解决方案,可以让你更容易地合并来自两个请求的状态,所以请继续关注。
谢谢,Eilon
https://stackoverflow.com/questions/279665
复制相似问题