Actualizado manualmente de MVC3 a MVC4 Beta y obteniendo errores de signo "no válidos @"

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

  •  29-10-2019
  •  | 
  •  

Pregunta

Estoy usando Razor en ambos

Cualquier página que use el letrero @. Es casi como el sistema.web.webpages o el system.web.helpers no pueden determinar las vistas

Aquí está el error real:

"@" no es válido al comienzo de un bloque de código. Solo los identificadores, palabras clave, comentarios "(" y "{" son válidos.

Aquí está mi web.config que está en la carpeta /Vistas

<?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>
¿Fue útil?

Solución 2

Resulta que cambiar a MVC4 beta no estaba manejando @@@ escapa correctamente

Tengo un cliente de Twitter donde representará el nombre de la pantalla de una persona en una vista como esta:

@@@TwitterUsername

Esto renderizará a @ con el escapado @@ y luego renderizará el nombre de Twitter con @twitterusername

Esto no funciona con MVC4. Así que tuve que cambiar a esto y funcionó bien:

@Html.Raw("@")@TwitterUsername

No tan bonito, pero funciona.
¿Hay algo que no esté bien con el análisis de afeitar en MVC4 o no estoy haciendo algo bien implementándolo?

La salida de esto es:

@jordanshane

Otros consejos

Consulte MVC 4 Liberación de liberación

Hay una sección que describe Actualización de un proyecto ASP.NET MVC 3 a ASP.NET MVC 4

Tuve un problema similar al actualizar de MVC3 a MVC4 al emitir una 'página' que es un volcado de Excel en formato XML Excel. Por ejemplo, tenía la siguiente línea en mi archivo de diseño de página XML:

No trabajar:

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

El analizador me dio el siguiente error:

Mensaje de error de analizador: ""/> "no es válido al inicio de un bloque de código. Solo identificadores, palabras clave, comentarios" ("y" {"son válidos.

La respuesta html.raw ("@") funcionó para mí, y no pude encontrar ningún motivo para este comportamiento en los enlaces que proporcionaron varias otras respuestas. En caso de que alguien esté buscando una solución más breve, aquí hay otra posibilidad:

Lo hace trabajar:

<NumberFormat ss:Format="m/d/yyyy;@('@')"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top