Файл Designer.cs создает ошибки автоматически - PullRequest
0 голосов
/ 25 июня 2009

Несмотря на мои недостатки, я получил некоторую ненужную помощь в создании ошибок в виде Visual Studio 2008, добавив неверный код в файл .designer.cs. Я ценю, что, вероятно, это происходит из-за моего упущения или ошибки - но я буду использовать предлог, что на самом деле я начинающий разработчик ASP.NET, поэтому я все еще учусь.

Соответствующие части экспортера решения выглядят так:

/Prototypes
  /Project01.Master
   - Project01.Master.cs
   - Project01.Master.designer.cs
  /SampleApplication.aspx
   - SampleApplication.aspx.cs
   - SampleApplication.aspx.designer.cs 

Я не совсем уверен, какие файлы включить в вопрос, поэтому я постараюсь угадать, насколько смогу. И .Master.cs, и SampleApplication.aspx.cs включаются в пространство имен Project01.Prototypes (хотя я не ценю это, это то, что было добавлено автоматически и работало, хотя мне не нужно было об этом думать) .

В верхней части SampleApplication.aspx находится следующее (для обеспечения доступа к некоторым свойствам, которые теоретически предоставляет мастер-страница.

<%@ Page Language="C#" MasterPageFile="~/Prototypes/Project01.Master" AutoEventWireup="true" CodeBehind="SampleApplication.aspx.cs" Inherits="Project01.Prototypes.SampleApplication" %>
<%@ MasterType VirtualPath="~/Prototypes/Project01.Master" %>

Внутри SampleApplication.aspx.designer.cs есть:

namespace Project01.Prototypes {

  public partial class SampleApplication {

    public new Project01.Prototypes.Project01 Master {
      get {
        return ((Project01.Prototypes.Project01)(base.Master));
      }
    }
  }
}

Все это приводит к ошибке:

The type name 'Prototypes' does not exist in the type 'Project01.Prototypes.Project01'

Я могу исправить эту ошибку и возобновить сборку, избавившись от 'Project01.Prototypes.' ссылки внутри самого класса (оставляя пространство имен). Моя проблема в том, что это только временное решение, так как Visual Studio продолжает добавлять его обратно, поэтому я предполагаю, что вопрос в том, где на самом деле находится моя ошибка?

p.s. Если это важно, я работаю в Visual Studio 2008 с веб-приложением ASP.NET MVC .

Ответы [ 2 ]

6 голосов
/ 25 июня 2009

Проблема в том, что ваше пространство имен верхнего уровня и класс мастер-страницы имеют одно и то же имя. Поэтому, когда компилятор пытается разрешить тип, он ищет тип "Prototypes.Project01" внутри класса главной страницы.

Я рекомендовал бы использовать свойство typename в директиве mastertype вместо virtualpath, но парсер, кажется, задыхается, когда вы используете там квалифицированное имя типа. Итак, как я вижу, у вас есть две альтернативы:

  1. Переименуйте вашу главную страницу. Использование имени проекта в любом случае может вызвать путаницу.
  2. Не используйте директиву mastertype и не объявляйте свойство Master в файле codebehind вручную.
0 голосов
/ 25 июня 2009

Вы пытались закрыть VS 2008, а затем снова открыть свой проект? Это обычно делает это для меня.

...