2012-04-19 15 views
9

Cuando uso el siguiente código en mi vista de maquinilla de afeitar, representa <label for=""> someText</label> y no <label for="">1. someText</label>, pero no puedo entender por qué 1. se elimina durante la representación.¿Por qué @ Html.Label() elimina algunos caracteres

@Html.Label(String.Format("{0}. someText",1)) 

Editar: El siguiente código hace <label for="">1# someText</label> como se esperaba.

@Html.Label(String.Format("{0}# someText",1)) 
+0

podría estar tratando de hacer referencia a un objeto?! – Treemonkey

Respuesta

20

Está utilizando indebidamente el método Html.Label. Es por:

Devuelve un elemento de etiqueta HTML y el nombre propiedad de la propiedad que está representado por la expresión especificada.

Es por eso que se confunde si tiene un punto . en el primer parámetro porque allí espera una expresión de propiedad.

Sin embargo, puede utilizar la segunda sobrecarga:

@Html.Label("", String.Format("{0}. someText",1)) 

O simplemente escribir el código HTML:

<label>@String.Format("{0}. someText", 1)</label> 
+0

eso es lo que pensé, aunque lo hagas sonar como si supieras de lo que hablas: D – Treemonkey

+0

Esto realmente me ayudó, aplausos. – Canvas

+0

¿Qué pasa si el texto de mi etiqueta proviene de la base de datos y no sé en qué posición "." Existe? –

0

La sintaxis que se está utilizando es incorrecta o podemos decir que esto no es una forma de usar la propiedad con la sintaxis de RAZOR. Puede usar esto que puede ser útil para usted.

**

@Html.LabelFor(model => model.PropertyName, 
     String.Format("{0}. " + @Model.PropertyName.ToString() + ",1)) 

**

1

Puede evitar el uso de la "etiqueta de HTML ayudante" y utilizar directamente html "etiqueta" y coloque los datos que desea mostrar correctamente. También puede ahorrar algo de tiempo;)

0

Estaba usando esto para una tabla de datos que contenía un doble (Lat/Long) y vi este mismo problema. Gracias por los consejos (no tengo permiso para comentar).

Para mí, el problema fue solucionado ..

@foreach (var cell in item.ItemArray) 
{ 
    <td> 
    @Html.Label("",cell.ToString().Trim()) 
    </td> 
} 
Cuestiones relacionadas