Aggiornato manualmente da mvc3 a mvc4 beta e ottenendo errori di segno "non valido @"

StackOverflow https://stackoverflow.com/questions/9399664

  •  29-10-2019
  •  | 
  •  

Domanda

Sto usando Razor in entrambi

Qualsiasi pagina che utilizza il segno @. È quasi come System.Web.WebPages o System.Web.Helpers non sono in grado di determinare le viste

Ecco l'errore effettivo:

"@" non è valido all'inizio di un blocco di codice. Solo identificatori, parole chiave, commenti, "(" e "{" sono validi.

Ecco il mio web.config che si trova nella cartella /view

<?xml version="1.0"?>

<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.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=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>
</system.web.webPages.razor>

<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>

<system.web>
<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

<!--
    Enabling request validation in view pages would cause validation to occur
    after the input has already been processed by the controller. By default
    MVC performs request validation before a controller processes the input.
    To change this behavior apply the ValidateInputAttribute to a
    controller or action.
-->
<pages
      validateRequest="false"
      pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
      pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
      userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
  </controls>
</pages>
</system.web>

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />

<handlers>
  <remove name="BlockViewHandler"/>
  <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
È stato utile?

Soluzione 2

Si scopre che il passaggio a MVC4 Beta non gestisce correttamente @@@

Ho un client Twitter in cui renderà il nome dello schermo di una persona in una vista come questa:

@@@TwitterUsername

Questo renderà un @ con il fuggito @@ e quindi renderà il nome di Twitter con @twittererername

Questo non funziona con MVC4. Quindi ho dovuto cambiare in questo e ha funzionato bene:

@Html.Raw("@")@TwitterUsername

Non così carino, ma funziona.
C'è qualcosa di giusto con il rasoio che analizza MVC4 o non sto facendo qualcosa di giusto implementandolo?

L'output di questo è:

@jordanshane

Altri suggerimenti

Fare riferimento a MVC 4 Nota di rilascio

C'è una sezione che descrive Aggiornamento di un progetto ASP.NET MVC 3 su ASP.NET MVC 4

Ho avuto un problema simile durante l'aggiornamento da MVC3 a MVC4 durante l'output di una "pagina" che è un dump Excel in formato XML di Excel. Ad esempio, avevo la seguente riga nel mio file di layout di pagina XML:

No opera:

<NumberFormat ss:Format="m/d/yyyy;@@"/>

Il parser mi ha dato il seguente errore:

Messaggio di errore del parser: ""/> "non è valido all'inizio di un blocco di codice. Solo identificatori, parole chiave, commenti," ("e" {"sono validi.

La risposta HTML.raw ("@") ha funzionato per me e non sono stato prontamente in grado di trovare alcun motivo per questo comportamento nei collegamenti forniti da diverse altre risposte. Nel caso in cui qualcuno stia cercando una soluzione dall'aspetto più conciso, ecco un'altra possibilità:

Fa opera:

<NumberFormat ss:Format="m/d/yyyy;@('@')"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top