【问题标题】:Partial View Rending Error the model item passed into the dictionary is of typePartial View Rending Error 传入字典的模型项的类型
【发布时间】:2016-11-23 19:11:49
【问题描述】:

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

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

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

它给了我一个错误,说明我没有传入正确的类型。我不明白为什么它说我试图传入的字典类型是 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; }
    }
}

【问题讨论】:

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


    【解决方案1】:

    Html.Partial()的第二个参数不能为null,否则会传入Model作为参数。 Иn 在您调用 @Html.Partial("~/Views/Shared/MessageDisplay.cshtml", DisplayMessages) 的那一刻,DisplayMessages 变量为空,并且模型 (LogOn) 被传递给局部视图。

    【讨论】:

    • 你是绝对正确的...非常感谢您抽出宝贵的时间...所以基本上视图需要能够显示一个不会有消息的初始状态,并且消息状态可以有验证错误。所以我所做的我测试了它以确保 DisplayMessages 不为空,如果它不为空,那么我包括部分视图渲染。再次感谢:)
    • 当然,没问题(啤酒)
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2013-10-18
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多