Вопрос новичка MVC о сильно типизированных представлениях - PullRequest
2 голосов
/ 17 июля 2009

Я думаю, что это проблема пространства имен, и ответ, вероятно, очень прост, но я новичок в этом материале 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 ]

1 голос
/ 17 июля 2009

Я думаю, вам нужно унаследовать от ViewPage(Of List(Of SampleSite.Models.User)) в определении вашей страницы:

Так ли это работает?

Ваш строго типизированный ViewPage должен наследоваться от базового универсального типа ViewPage (Of T), где T - это тип данных, которые вы хотите отобразить на странице просмотра («модель представления»).

Марк

0 голосов
/ 17 июля 2009

Я подумал, что это просто проблема с пространством имен. Я обернул нарушающий класс 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

Конечное пространство имен

0 голосов
/ 17 июля 2009

Если вы говорите, что у вас несколько «индексных страниц», проблема в том, что у всех одинаковое пространство имен. У вас есть Index (a), производный от ViewPage, и Index (b), производный от ViewPage of List (..), поскольку классы объявлены частичными и имеют одинаковые пространства имен, компилятор пытается объединить их в один класс, но это невозможно, поскольку они не наследовать от одного базового класса.

Сделайте это: Index (a) -> Inherits = "SampleSite.Index" Индекс (b) -> Inherits = "SampleSite.XXXXXXX.Index" и измените соответствующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...