2

我是 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>

这是我的视图模型:

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

我收到错误“未找到部分视图消息”错误。部分视图应该被称为 Messanging.cshtml 还是我得到了根本错误的东西?

非常感谢任何帮助。

谢谢,威尔基。

4

2 回答 2

5

这是我的部分视图,名为 _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);
于 2013-06-20T11:23:08.177 回答
1

你的猜测是对的。部分视图应在调用操作后命名,在您的情况下为“Messanging.cshtml”,或者您应该使用重载显式为 View 方法提供视图名称

protected internal ViewResult View(
    string viewName,
    Object model
)
于 2013-06-20T11:24:42.723 回答