2013-06-20 94 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 
)