1

下面是我的 UI 视图页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.Person>" %> 

现在,我添加了用户控件,它使用注册模型来显示内容。

<asp:Content ID="Content3" ContentPlaceHolderID="MyControl" runat="server">
    <%Html.RenderPartial("RegisterControl"); %>
</asp:Content>

我收到错误:

传入字典的模型项的类型为“MvcApplication1.Models.Person”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[MvcApplication1.Models.RegisterModels]”的模型项。

请在这里帮助我......我需要做什么......??

4

2 回答 2

0

您的问题是您的父视图是对 Person 的强类型。当您调用 RenderPartial 时,引擎将简单地将父视图模型传递给局部视图,在您的情况下,它期望的不是 Person 对象,而是 RegisterModels 对象。

所以你有一些选择。我认为这可能是最简单的解决方法:创建一个新的视图模型

public class PersonRegister
{
   public Person Person {get; set;}
   public RegisterModels Register {get; set;}
}

现在强烈键入您对该模型的视图

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.PersonRegister>" %> 

并像这样调用部分

<%Html.RenderPartial("RegisterControl", Model.RegisterModels); %>
于 2012-09-12T12:22:21.450 回答
0

您应该将模型传递给您的视图。

<%Html.RenderPartial("RegisterControl", new MvcApplication1.Models.Person()); %>

更多信息在这里:renderpartial with null model gets pass the wrong type

于 2012-09-12T11:58:16.450 回答