2010-04-26 77 views
0
I am getting this following error , when i am tring to having two user controls in one page. 

传递到词典中的模型项的类型为 'System.Linq.EnumerableQuery 1[Data.EventLog]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [Data.Notes]'。ASP.NET MVC在单一的.aspx使用多个用户控件(视图)

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

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Test 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Test</h2> 

    <% Html.RenderPartial("~/Views/Shared/UserControl/Tracking.ascx"); %> 
    <% Html.RenderPartial("~/Views/Shared/UserControl/Notes.ascx"); %> 
</asp:Content> 

回答

3

Notes.ascx控制是强类型的,但你是不是在您的通话传递模式RenderPartial。因此,页面的模型被传递,这是用户控件的错误类型。您需要在呼叫中传递模型RenderPartial

例如,如果事件日志页面模型有一个名为NotesModel属性:

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

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Test 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Test</h2> 

    <% Html.RenderPartial("~/Views/Shared/UserControl/Tracking.ascx"); %> 
    <% Html.RenderPartial("~/Views/Shared/UserControl/Notes.ascx", Model.NotesModel); %> 
</asp:Content> 

注意我:

  1. 改变了Inherits@Page指令到指定模型类型和,
  2. 添加model参数RenderPartial

您当然需要在您的控制器中填入Model.NotesModel。如果它是null,您会看到您目前看到的相同错误。

+0

我其实是新手,请给我一个这样的例子吗?谢谢 – Pinu 2010-04-27 14:18:58

+0

现在添加的例子。 – 2010-04-27 15:02:08

+0

谢谢,我欣赏它:-) – Pinu 2010-04-28 14:49:40

相关问题