Implementieren Sie eine benutzerdefinierte MVC Base View-Seite

Ich versuche, eine benutzerdefinierte MVC-Basisansichtsseite zu implementieren, um die zu "überschreiben"User Art der Immobilie. Das macht meineCustomPrincipal Typ in jeder Ansicht zugänglich.

Nachdem ich im Internet gesucht hatte, fand ichAnleitung von Phil Haack zum Implementieren einer benutzerdefinierten Basisansichtsseite. Ich habe die Anweisungen genau so befolgt, wie sie geschrieben wurden, bin jedoch beim Zugriff auf die Eigenschaften in der Ansicht auf ein Problem gestoßen.

Wenn ich eine Ansicht öffne, werden alle vorherigen Html-Hilfsaktionen mit der blauen, verzerrten Linie unterstrichen. Wenn ich mit dem Mauszeiger über die@Html Teil, es zeigt den Fehler:

"HTML ist nicht eindeutig und wurde aus den Namespaces oder den Typen 'System.Web.WebPages, System.Web.Mvc' importiert."

Jetzt verstehe ich, warum ich die Nachricht erhalte, aber ich verstehe nicht, wie ich sie beheben kann. Ich weiß nicht, warum das wichtig ist, aber die aktuelle Anwendung wurde in Visual Basic erstellt. Als sekundären Test habe ich eine weitere MVC-Anwendung in C # erstellt und versucht, die benutzerdefinierte Seite für die Basisansicht zu implementieren. In der C # -Anwendung hat es einwandfrei funktioniert. Ich kann über die Ansichten auf meine benutzerdefinierte Eigenschaft zugreifen.

Ich habe im Internet nach einer Antwort auf dieses Problem gesucht, aber bisher nichts gefunden. Ist noch jemand auf ein ähnliches Problem gestoßen?

Als Referenz habe ich meine benutzerdefinierte Basisansichtsseite und eingefügt~/Views/web.config unten:

BaseViewPage

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using CCInfoController;

namespace CCInfo.Web.Mvc
{
    public class BaseViewPage<TModel> : WebViewPage<TModel>
    {
        public new CustomPrincipal User
        {
            get
            {
                return base.User as CustomPrincipal;
            }
        }

        public override void Execute()
        {
        }
    }
}

~ / Views / web.config

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor"
      type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,
      System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
      PublicKeyToken=31BF3856AD364E35">
    <section name="host" 
       type="System.Web.WebPages.Razor.Configuration.HostSection,
       System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages"
       type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
       System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,
       System.Web.Mvc, Version=3.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="CCInfo.Web.Mvc.BaseViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
        <add namespace="CCInfoController" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
  ...
</configuration>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage