从一个控制器到另一个控制器的MVC RedirectToAction - View不显示问题

时间:2010-09-15 11:18:53

标签: asp.net-mvc view rendering redirecttoaction

我有一个控制器可以进行一些检查。

如果由于某种原因发生异常,我想在另一个控制器的另一个视图中显示错误消息。

这是我的异常处理程序的外观

  catch (Exception ex)
        {
            string infoMsg = "Delete the user and recreate is with an appropriate username of both a first and last name which is required for a doctor";

            string errorMsg = ex.Message;

          //  ErrorController ec = new ErrorController();

            return this.RedirectToAction("Index", "Error", new { errorMessage = errorMsg, infoMessage = infoMsg });

        }

这是接听电话的ActionResult。

   public ActionResult Index(string errorMessage, string infoMessage)
    {
        var db = new DB();

        OccuredError occuredError = new OccuredError();

        occuredError.ErrorMsg = errorMessage;
        occuredError.InfoMsg = infoMessage;

        DateTime dateTime = DateTime.Now;

        occuredError.TimeOfError = dateTime;

        db.OccuredErrors.InsertOnSubmit(occuredError);
        db.SubmitChanges();


        return View(occuredError);
    }

这是强类型的错误索引视图

<h2>Index</h2>

<table>
    <tr>
        <th></th>
        <th>
            Error Message
        </th>
        <th>
            Info Message
        </th>
        <th>
            Time Of Error
        </th>
    </tr>

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.ActionLink("Details", "Details", new { id=item.ErrorId })%> |
        </td>
        <td>
            <%= Html.Encode(item.ErrorId) %>
        </td>
        <td>
            <%= Html.Encode(item.ErrorMsg) %>
        </td>
        <td>
            <%= Html.Encode(item.InfoMsg) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.TimeOfError)) %>
        </td>
    </tr>

<% } %>

</table>

我的问题是用户不会从初始视图(具有异常的视图)重定向到Error索引视图。调试时,我可以看到它正好运行错误索引ActionResult并将数据放入数据库中。显示索引视图只会导致我认为的问题。

对我在这里做错的任何建议。

1 个答案:

答案 0 :(得分:1)

作为快速测试,请更改:   return View(occuredError); 至:   return View("Error", occuredError);

其中“Error”是视图的名称。

马特