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

关于强类型视图的MVC新手问题

  •  2
  • camainc  · 技术社区  · 15 年前

    我认为这是一个名称空间的问题,答案可能非常简单,但我是这个MVC的新手。

    我有多个名为“index”的视图。在我尝试创建一个名为“index”的新的强类型视图之前,这不是问题。

    (就其价值而言,我试图遵循Nerddinner示例中的步骤,但使用的是vb而不是c。)

    当我添加名为“index”的强类型视图时,编译器抛出此错误:

    基类“system.web.mvc.viewpage(共页) System.Collections.Generic.List(共 为类指定的models.user))' “index”不能与 基类“system.web.mvc.viewpage” 它的另一个分部类型。

    有人能告诉我为什么会发生这种情况,以及我能做些什么来缓解这个问题吗?

    事先谢谢。

    观点:

    <%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" 
             AutoEventWireup="false" CodeBehind="Index.aspx.vb" 
             Inherits="SampleSite.Index" %> 
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    </asp:Content> 
    

    代码落后:

    Imports System.Web.Mvc 
    Imports System.Collections.Generic 
    
    Partial Public Class Index Inherits System.Web.Mvc.ViewPage(Of List(Of SampleSite.Models.User)) 
    End Class 
    
    3 回复  |  直到 15 年前
        1
  •  0
  •   Ariel Popovsky    15 年前

    如果您说您有多个“索引页”,那么问题是所有页面都有相同的名称空间。 您有从viewpage派生的索引(a)和从list(..)的viewpage派生的索引(b),因为这些类被声明为部分的,并且具有相等的命名空间,所以编译器试图将它们放在一个类中,但不可能,因为它们不是从同一个基类继承的。

    这样做: index(a)->inherits=“samplesite.index” index(b)->inherits=“samplesite.xxxxx.index”并相应地修改后面的代码。

        2
  •  1
  •   marc_s HarisH Sharma    15 年前

    我想你需要继承 ViewPage(Of List(Of SampleSite.Models.User)) 在页面定义中:

    这样行吗??

    强类型的view page必须继承自“view page(of t)”基本泛型类型,其中t是要在视图页中显示的数据类型(“视图模型”)。

    马克

        3
  •  0
  •   camainc    15 年前

    我觉得这只是一个名称空间问题。我将有问题的索引类包装在下面这样的名称空间中,它解决了这个问题。不确定这是否是解决这个问题的正确方法,但它是有效的。

    导入system.web.mvc 导入system.collections.generic

    命名空间samplesite

    Partial Public Class Index
        Inherits System.Web.Mvc.ViewPage(Of List(Of Models.User))
    
    End Class
    

    结束命名空间