我是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; }
}
我收到错误“找不到部分视图消息”错误。部分视图应该被称为Messanging.cshtml还是我得到了根本错误的东西?
任何帮助都非常感激。
谢谢, Wilky。
答案 0 :(得分: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);
}
如果partial位于某个非标准位置,您还可以指定它的完整路径:
return PartialView("~/Views/FooBar/Baz/_MessagingPartial.cshtml", model);
答案 1 :(得分:1)
你的猜测是正确的。部分视图应该在调用操作后命名,在您的情况下应该使用“Messaging.cshtml”,或者您应该使用重载来明确地将视图名称提供给View method
protected internal ViewResult View(
string viewName,
Object model
)