0

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

4

1 回答 1

1

确保您通过了您的部分期望的正确模型:

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

如果您没有将模型指定为Html.Partial辅助函数的第二个参数,那么它将自动传递当前视图的模型(在您的情况下是 type MyProject.Models.ProvinceModel),这就是您收到错误的原因:您的部分需要一个 type 的模型MyProject.SharedTools.OperationStatus.

此外,还不清楚您在哪里使用存储在局部控制器中的 TempData 值。也许它应该是这样的:

@model MyProject.SharedTools.OperationStatus

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

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

@TempData["OperationStatus"]
于 2013-02-22T09:15:01.083 回答