返回视图时ViewData为空

时间:2013-05-04 15:26:36

标签: asp.net-mvc-3

我对这件事感到十分困惑,我从未遇到过这件事。我有一个名为“Error”的共享视图,它输出标准消息,后跟自定义消息:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>
    Sorry, an error occurred while processing your request. @{ ViewData["ErrorMessage"].ToString(); }
</h2>

在控制器catch块中,我将ViewData设置为自定义消息:

    catch (Exception ex)
    {
        ...
        ViewData["ErrorMessage"] = "This is my custom message";
        return View("Error");
    }

但是,加载视图时,ViewData会显示我的键“ErrorMessage”,但从不输出字符串。

1 个答案:

答案 0 :(得分:3)

您的表达式不会显示任何内容,因为您没有向响应中写出ViewData["ErrorMessage"]

使用@{ ... }创建一个剃刀代码块,它不会向输出写入任何内容,只执行内部代码。

要写入输出,您需要使用@符号:

<h2>
    Sorry, an error occurred while processing your request. @ViewData["ErrorMessage"]
</h2>

有关razor syntax.

的更多信息