使用TempData在MVC中显示消息

时间:2013-02-22 09:07:41

标签: asp.net-mvc razor

我想在asp.net mvc中显示一条消息。为此,我创建了一个局部视图。此部分视图的名称是_feedback。在这个局部视图的正文中,我写了这些代码。

@model MyProject.SharedTools.OperationStatus

@if (Model != null)
{
    if (Model.IsSuccess)
    {
        @:Model.Message;
    }
    else
    {
        @:Model.Message;
    }
}

我把这段代码放在_layout文件中:

@Html.Partial("_feedback")

当我想看到来自控制器的消息时,使用以下代码:

 operationStatus = _provinceRepository.Save();
 if (operationStatus.IsSuccess)
 {
     TempData["OperationStatus"] = operationStatus;
     return RedirectToAction("Index");
 }

但是我给出了这个错误:

传入字典的模型项的类型为“MyProject.Models.ProvinceModel”,但此字典需要“MyProject.SharedTools.OperationStatus”类型的模型项。

1 个答案:

答案 0 :(得分:1)

确保您已经传递了部分期望的正确模型:

@Html.Partial("_feedback", Model.SomePropertyOfTypeOperationStatus)

如果您没有将模型指定为Html.Partial助手的第二个参数,那么它将自动传递当前视图的模型(在您的情况下为MyProject.Models.ProvinceModel类型),这就是为什么您收到错误:您的部分期望MyProject.SharedTools.OperationStatus类型的模型。

同样不清楚在哪里使用存储在控制器内部的部分TempData值。也许它应该是这样的:

@model MyProject.SharedTools.OperationStatus

@if (Model != null)
{
    @TempData["OperationStatus"]
}

或者你不是只想在不使用模型的情况下直接显示存储在部分TempData中的值?

@TempData["OperationStatus"]