部分视图Rending错误传递到字典中的模型项的类型为

时间:2016-11-23 19:11:50

标签: asp.net-mvc asp.net-mvc-partialview

所以我开发了一个简单的局部视图,它将处理在页面顶部显示消息。

然后我想在我的所有页面中使用该部分视图来处理信息,警告或错误消息。

我创建了一个登录页面,这是我第一次尝试这样做。

它给我一个错误,说明我没有传递正确的类型。我不明白为什么它说明我试图传入的字典类型是Music.Accounts.ViewModels.Log,当它非常清楚地显示我开发一个变量将属性从父模型分配给该变量然后尝试将其作为我的模型传递给我的部分视图。

非常感谢任何帮助:)

错误和代码低于

谢谢:)

呈现网页时的系统错误

  

附加信息:传入字典的模型项的类型为
  ' Music.Accounts.ViewModels.LogOn',但此词典需要一个模型项   类型' System.Collections.Generic.List`1

namespace MMLibrary.MMWeb.MessageHandling
{
    public enum MessageTypes
    {
        TopSummary = 1
        , BottomSummary = 2
        , Error = 3
        , Warning = 4
        , Informational = 5
    }
    public struct Message
    {
        public string PropertyName;
        public string MessageText;
        public MessageTypes MessageType;
    }
}

部分视图渲染

@using MMLibrary.MMWeb.MessageHandling
@model List<Message>

父视图渲染

@using Music.Accounts.ViewModels
@using MMLibrary.MMWeb.MessageHandling
@model LogOn
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    var DisplayMessages = Model.DisplayMessages;
}
@Html.Partial("~/Views/Shared/MessageDisplay.cshtml", DisplayMessages)

父视图的ViewModel

namespace Music.Accounts.ViewModels
{
    public class LogOn
    {
        public string Email { get; set; }
        public string Password { get; set; }
        public bool RememberMe { get; set; }
        public List<Message> DisplayMessages { get; set; }
    }
}

1 个答案:

答案 0 :(得分:0)

Html.Partial()的第二个参数不应为null,否则它将传递Model作为参数。 在您调用@ Html.Partial(“〜/ Views / Shared / MessageDisplay.cshtml”,DisplayMessages)的那一刻, DisplayMessages 变量为null,模型(LogOn)将传递给局部视图。 / p>