代码之家  ›  专栏  ›  技术社区  ›  Pinu

在单个.aspx(视图)上使用多个用户控件的ASP.NET MVC

  •  0
  • Pinu  · 技术社区  · 16 年前
       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]'。

    <%@ 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>
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Craig Stuntz    16 年前

    你的 Notes.ascx 控件是强类型的,但您在对的调用中没有传递模型 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 渲染部分 .

    Model.NotesModel 在你的控制器里。如果是的话 null 您将看到与当前看到的相同的错误。