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

时间:2009-07-17 18:37:00

标签: asp.net-mvc

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

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

(值得一提的是,我试图按照NerdDinner示例中的步骤进行操作,但是在VB而不是C#中。)

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

  

基类'System.Web.Mvc.ViewPage(Of   System.Collections.Generic.List(中   Models.User))'为类指定   '指数'不能与之不同   基类'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 个答案:

答案 0 :(得分:1)

我认为您需要在页面定义中继承ViewPage(Of List(Of SampleSite.Models.User))

 

它是否有效?

您的强类型ViewPage必须继承“ViewPage(Of T)”基本泛型类型 - 其中T是您要在视图页面中显示的数据类型(“视图模型”)。

马克

答案 1 :(得分:0)

如果你说你有多个“索引页面”,那么问题是所有都有相同的命名空间。 你有从ViewPage获得的索引(a)和从列表(..)的ViewPage派生的索引(b),因为这些类被声明为partial并且具有相同的命名空间,编译器会尝试将它们放在一个类中但是因为它们不可能不要从同一个基类继承。

这样做: 索引(a) - &gt;继承= “SampleSite.Index” 索引(b) - &gt; Inherits =“SampleSite.XXXXXXX.Index”并相应修改后面的代码。

答案 2 :(得分:0)

我认为这只是命名空间问题。我将违规的Index类包装在如下的命名空间中,它解决了这个问题。不确定这是否是解决此问题的正确方法,但它确实有效。

导入System.Web.Mvc Imports System.Collections.Generic

命名空间SampleSite

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

End Class

结束命名空间