2012-06-25 18 views
8

tengo este código (anidado dentro de un puesto de forma), pero continuamente estoy consiguiendo el error que le falta el cierre }MVC de afeitar por un bucle de

@for(int i=0;i< itemsCount; i++){ 
    <input type="hidden" @string.Format("name= item_name_{0} value= {1}",i,items[i].Description) > 
    <input type="hidden" @string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))> 
} 

He estado mirando el tiempo suficiente .. .¿Alguien puede ayudar?

+2

no creo que este fragmento tiene un problema. Se muestra sin errores en mi máquina. Tal vez tengas un '' 'extra en el código. – gideon

Respuesta

10

Try puso @: antes de su código html así:

@for(int i=0;i< itemsCount; i++) 
{ 
    @: html code here 
} 

Alternativas: 1. envolver su código html con <text></text> 2. Uso HtmlHelper para generar el código HTML

0

o puede utilizar Html.Raw el ayudante

@for(int i=0; i < itemsCount; i++) 
{ 
    <input type="hidden" @Html.Raw(string.Format("name= item_name_{0} value= {1}",i,items[i].Description)) /> 
    <input type="hidden" @Html.Raw(@string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))) /> 
} 
0

intento:

@for (int i = 0; i < itemsCount; i++) { 
    <input type="hidden" name="@("item_name_" + i)" value="@items[i].Description" /> 
    <input type="hidden" name="@("item_name_" + i)" value="@(items[i].UnitPrice.ToString("c"))" /> 
} 

Tenga en cuenta los cambios/notas en prashanth es otro también.

1

La manera más fácil es hacer uso de HTML Helpers. Código será limpia, así (el formato del nombre para la descripción y PrecioUnidad parece seguir el mismo formato, es posible que desee cambiarlo)

@for (int i = 0; i < itemsCount; i++) 
    { 
     @Html.Hidden(string.Concat("ïtem_name_", i), items[i].Description) 
     @Html.Hidden(string.Concat("ïtem_name_", i), items[i].UnitPrice.ToString("c"))   
    } 
2

puede observar que para la escritura de un bloque de código se puede escribir de dos maneras

  1. por sólo una línea de bloque, al igual que lo ha escrito en su código y esto encierra sólo la línea que contiene el anterior @
  2. Para el Bloque de Código usando @ {...}, esto le da libertad para usar el Código sin el precedente @ excepto dentro de las expresiones HTML. Para cualquier html/texto debe precederlo con @: desea imprima como está; de lo contrario, Razor intentará interpretarlo como código (Since @: define el contenido como literal para cada expresión código bajo @: @ debe utilizar de nuevo por código)

En su caso se puede hacer lo siguiente

@{ 
    for(int i=0; i < itemsCount; i++) 
    { 
     @:<input type="hidden" @Html.Raw(string.Format("name= item_name_{0} value= {1}",i,items[i].Description)) /> 
     @:<input type="hidden" @Html.Raw(@string.Format("name= item_name_{0} value= {1}",i,items[i].UnitPrice.ToString("c"))) /> 
    } 
} 
Cuestiones relacionadas