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

Posted

技术标签:

【中文标题】MVC 新手关于强类型视图的问题【英文标题】:MVC Newbie Question about Strongly-Typed Views 【发布时间】:2009-07-17 18:36:59 【问题描述】:

我认为这是一个命名空间问题,答案可能非常简单,但我是 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 

【问题讨论】:

请发Index查看 为你添加到原帖中 这个问题是由于我对 MVC 进行 Web 视图的方式缺乏了解(因此,问题标题中的“新手”)。我在每个视图文件夹中添加了一个名为“Index”的视图,而不是在每个控制器上使用“Index”操作。现在我知道了这一点,我不再需要命名每个视图。只有一个 Index.aspx,它位于 Home 视图文件夹中。感谢那些试图回答我愚蠢问题的人。 【参考方案1】:

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

这样可以吗??

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

马克

【讨论】:

【参考方案2】:

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

这样做: 索引 (a) -> Inherits="SampleSite.Index" Index (b) -> Inherits="SampleSite.XXXXXXX.Index" 并相应修改后面的代码。

【讨论】:

【参考方案3】:

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

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

命名空间示例站点

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

End Class

结束命名空间

【讨论】:

以上是关于MVC 新手关于强类型视图的问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 强类型视图与否?

ASP MVC 中的强类型视图

MVC - 强类型视图被破坏

ASP.NET MVC 强类型部分视图,给出无法加载类型错误

asp.net mvc 视图和强类型视图数据

带有 DropDownList 的 ASP.NET MVC 强类型视图