2013-06-20 92 views
0

我是新来的MVC,我试图添加一个局部视图到我的主布局页面,以便我可以在整个应用程序中显示消息。我有一些麻烦回环出来:MVC部分视图不呈现

这里是我的布局:

<div class="span12">  
<p> 
    @{Html.RenderAction("Messaging", "Messaging");} 
</p> 
@RenderBody() 
</div> 

这是我的消息控制器:

public ActionResult Messaging() 
{ 
    return PartialView(new ViewModels.Messaging() 
     { 
      MessageType = Utilities.MessageType.Success, 
      MessageHeader = "Test", 
      Message = "this is a test message" 
     }); 
} 

这里被保存在我的叫_MessagingPartial.cshtml局部视图共享文件夹:

@model AWS.PL.ViewModels.Messaging 

<span> 
    Model.Message 
</span> 

这里是我的ViewModel:

public class Messaging 
{ 
    public Utilities.MessageType MessageType { get; set; } 
    public string MessageHeader { get; set; } 
    public string Message { get; set; } 
} 

我收到错误“Partial view Messaging was not found”错误。如果部分视图被称为Messanging.cshtml,或者我得到了根本错误的东西?

任何帮助非常感谢。

谢谢, Wilky。

+1

试试这个 @ Model.Message Amit

回答

3

这是我叫_MessagingPartial.cshtml

局部视图

你的部分观点应该被称为Messaging.cshtml堂妹就是这样呈现它的控制器操作的名称。

如果你想呈现一个自定义的部分名称,一定要明确指定:

public ActionResult Messaging() 
{ 
    var model = new ViewModels.Messaging 
    { 
     MessageType = Utilities.MessageType.Success, 
     MessageHeader = "Test", 
     Message = "this is a test message" 
    }; 
    return PartialView("_MessagingPartial", model); 
} 

,如果部分位于一些非标准的位置,你也可以指定完整路径:

return PartialView("~/Views/FooBar/Baz/_MessagingPartial.cshtml", model); 
+0

谢谢。很好的帮助。 – Wilky

1

您的猜测是正确的。无论是局部视图应该在你的情况下调用行动,“Messanging.cshtml”来命名,或者你应该使用重载显式提供视图名称View method

protected internal ViewResult View(
    string viewName, 
    Object model 
)