部分视图无法渲染,因为TempData为null

时间:2014-04-07 19:41:43

标签: asp.net-mvc razor

以下是我的索引视图的一部分:

@if (TempData["SucessAlert"] != null)
{
    Html.RenderPartial("~/Views/Shared/_SuccessAlert.cshtml");
}

这是部分视图,_SuccessAlert.cshtml:

<div class="alert alert-success alert-dismissable">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    @TempData["SuccessAlert"]
    <a href="@TempData["SuccessAlertLink"]" class="alert-link">@TempData["SuccessAlertLinkText"]</a>
</div>

这是我的控制器的一部分:

TempData["SuccessAlert"] = "Successfully created account code " + mergedCode + ".";
TempData["SuccessAlertLinkText"] = "Click here to view it.";
TempData["SuccessAlertLink"] = "/AccountCode/Details?Division=" + viewModel.Division
    + "&ProgramCode=" + viewModel.ProgramCode
    + "&ProjectCode=" + viewModel.ProjectCode
    + "&includeDisabled=False&page=1";

return RedirectToAction("Index");

在将@if()语句添加到视图之前,一切正常。选中此TempData["SuccessAlert"]语句时,显然@if始终为null。实际上,如果我将@if()语句更改为@if(true),它仍然有效,因此TempData在局部视图中具有正确的值,即使它在视图中是空的。

知道我做错了什么吗? (如果重要的话,我正在使用MVC5。)

1 个答案:

答案 0 :(得分:1)

呸!我刚刚意识到我拼错了#34;成功&#34;作为&#34;成功&#34; (1&#34; C&#34;)在@if()语句中。我要留下这个来记录我是一个白痴的事实,以及其他人发现本课有用的机会 - 仔细检查TempData和ViewBag键的拼写。