下面是我的UI视图页面:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.Person>" %>
现在,我添加了User控件,它使用RegisterModel来显示内容。
<asp:Content ID="Content3" ContentPlaceHolderID="MyControl" runat="server">
<%Html.RenderPartial("RegisterControl"); %>
</asp:Content>
我收到错误:
传递到字典中的模型项的类型为"MvcApplication1.Models.Person",但此词典需要模型类型的项目’系统。集合。通用的IEnumerable `1[MvcApplication1.Models.RegisterModels]'.
请帮帮我。。。我需要做什么。。。??
您应该将模型传递给视图。
<%Html.RenderPartial("RegisterControl", new MvcApplication1.Models.Person()); %>
这里的更多信息:带有null模型的renderpartial被传递了错误的类型
您的问题是您的父视图被强类型化为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); %>