当操作类型为:RedirectToRouteResult时,在视图中显示错误
本文关键字:视图 显示 错误 类型 操作 RedirectToRouteResult | 更新日期: 2023-09-27 18:04:16
下面的代码没有在视图中显示我的错误,我如何确保我的错误在视图中显示?
注意,如果某个地方出错了,我会抛出一个规则异常,如果是这样,我会将错误复制到modelstate [HttpPost]
public RedirectToRouteResult TaskDueDate(int id, int taskid)
{
var duedate = Request.Form["duedate"];
var duetime = Request.Form["duetime"];
try
{
var newduedate = DateHelper.GoodDate(duedate, duetime);
_service.SetTaskDueDate(id, taskid, newduedate);
this.FlashInfo("success, task due date has been updated...");
}
catch (RulesException ex)
{
ex.CopyTo(ModelState);
}
return RedirectToAction("TaskDetail");
}
交货。CopyTo扩展方法:
public static void CopyTo(this RulesException ex, ModelStateDictionary modelstate)
{
CopyTo(ex,modelstate,null);
}
public static void CopyTo(this RulesException ex, ModelStateDictionary modelstate, string prefix)
{
prefix = string.IsNullOrEmpty(prefix) ? "" : prefix + ".";
foreach (var propertyerror in ex.Errors)
{
string key = ExpressionHelper.GetExpressionText(propertyerror.Property);
modelstate.AddModelError(prefix + key, propertyerror.Message);
}
}
在我看来,我基本上有:
<div id="Errors">
<span id="ServerResponse"></span>
<%= Html.ValidationSummary(false, "")%>
</div>
我认为模型状态被清除,没有错误留在重定向??
是的,重定向是对浏览器的响应,告诉它发出新的请求,因此您拥有的任何上下文都将丢失。
当有东西要显示时,你可以显示一个错误页面:
if (ModelState.Count > 0) {
return View("ErrorPage");
} else {
return RedirectToAction("TaskDetail");
}
您需要将操作方法的返回类型更改为基类AcionResult
,以返回不同类型的操作结果。