我有一个MVC3 C#.Net网络应用程序。从Excel函数导入。此功能在速率控制器的导入方法中执行。它在Rate / Import视图中查看。导入时,某些行成功,有些则不成功。我正在将错误收集到string []数组中。如果成功导入一个或多个行,则导入被视为成功,因此应用程序将导航回“投标编辑”视图。我想将信息错误传递回Proposal Edit视图以供显示。任何想法如何做到这一点?
答案 0 :(得分:3)
有几种方法。
<强> TempData的强>
这在您的控制器中可用。 TempData在单个重定向中持续存在。
public ActionResult Process()
{
// ... Process your rows, get array of errors back ...
TempData["errors"] = errors;
return RedirectToAction("Edit");
}
public ActionResult Edit()
{
var errors = (IEnumerable<string>)TempData["errors"]; // Get the errors back.
return View(errors); // Pass into the view
}
<强>的ModelState 强>
您可以将这些错误直接添加到ModelState,然后重新显示编辑表单。它不会在重定向中持续存在。
public ActionResult Process()
{
// ... Process your rows, get array of errors back ...
for(var i = 0; i < errors.Length; i++)
{
ModelState.AddModelError("row" + i, errors[i]);
}
// Can't redirect here - ModelState doesn't persist.
return View("Edit");
}
然后,在编辑视图中,只显示验证摘要:
@Html.ValidationSummary("The following row errors occured:");
这将呈现此HTML。该类是MVC设置的默认类。
<div class="validation-summary-errors">
<span>The following row errors occured:</span>
<ul>
<li>...Error 1...</li>
... Other errors ...
</ul>
</div>