2013-02-22 44 views
0

我想在asp.net mvc中显示消息。为此,我创建了一个局部视图。此部分视图的名称是_feedback。在这部分视图的主体中,我编写了这些代码。使用TempData在MVC中显示消息

@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.Prov inceModel',但是这个字典需要一个'MyProject.SharedTools.OperationStatus'类型的模型项。

+0

您在View中定义OperationStatus模型,但在控制器中您尝试传递ProvinceModel模型。 – 2013-02-22 09:10:40

回答

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"]