2010-12-11 20 views
16

¿Por qué debo usar la etiqueta <text> para encerrar el literal de la tubería '|' en este marcado? Seguramente está fuera del alcance del método ActionLink.Problema literal del texto en MVC3 Razor view

@foreach (var item in Model.DetailItem.PlannedResources) 
{ 
    <tr> 
     <td> 
      @if (Model.ViewMode == ViewMode.Edit) 
      { 
       @Html.ActionLink("Edit", "Edit", new { id = item.PlannedResourceId }) <text>|</text> 
       @Html.ActionLink("Delete", "Delete", new {id = item.PlannedResourceId})                  
      } 
      @Html.ActionLink("Details", "Details", new { id = item.PlannedResourceId }) 
     </td> 
     <td> 
      | @item.ResourceType.Name 
     </td> 
    </tr> 
} 

Si yo no lo uso, me sale el error CS1525: Invalid expression term '|', pero el segundo '|' pasa sin obstáculos.

Respuesta

20

Es porque cuando estás dentro de una declaración con { y } sólo etiquetas HTML se consideran como literales, todo lo demás es script del lado del servidor. Por lo tanto, debe utilizar etiquetas HTML estándar como <div>, <span>, ... o si desea usar un literal, use la etiqueta especial <text> que no se envía a la respuesta.

+0

Interesante, pero ¿por qué entonces mi otro | char (ver ediciones) fuera del inner {}, pero todavía está dentro de un {} externo para un bucle. ¿Está el ser dentro de una etiqueta HTML escapar de alguna manera? – ProfK

+0

@ProfK, no entiendo. ¿De qué interno y externo '{}' estás hablando? Que edita? –

+1

@ProfK, lo siento, ahora veo tus ediciones. En el exterior '{}', el carácter '|' está dentro de una etiqueta: '', por eso funciona, mientras que en el interior no hay etiqueta: tienes '{', algún ayudante del lado del servidor '@ Html.ActionLink' seguido directamente por '|', sin etiqueta y cuando no hay etiqueta, se considera del lado del servidor. –

18

Si su texto abarca varias líneas, puede usar la etiqueta <text>.

<text>your text here...
over to the 2nd line.</text>

Alternativamente, si simplemente desea que el carácter de canalización usar la directiva @: para especificar el texto, por lo
@:| es la salida |, y el mensaje de error desaparecerá.

Cuestiones relacionadas