【问题标题】:Show a Message in MVC using TempData使用 TempData 在 MVC 中显示消息
【发布时间】:2013-02-22 09:07:41
【问题描述】:

我想在 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”的模型项。

【问题讨论】:

  • 您在 View 中定义 OperationStatus 模型,但在控制器中您尝试传递 ProvinceModel 模型。

标签: asp.net-mvc razor


【解决方案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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2021-04-04
    • 1970-01-01
    • 2017-01-31
    • 2019-04-10
    相关资源
    最近更新 更多