2012-03-12 11 views
7

Digamos que tengo una función en mi modelo, que genera una etiqueta de estilo basado en un int¿Cuál es la forma correcta de generar atributos/texto HTML con comillas en Razor/MVC3?

public string GetStyle(int? size){ 
    if(size > 99) 
     return "style=\"margin: 20px;\""; 
    else 
     return ""; 
} 

Si me hacen esto utilizando

<li @GetStyle(123)>123</li> 

Genera esto:

<li style=""margin:20px;"">123</li> 

(Tenga en cuenta las comillas dobles). Si cambio las comillas dobles con escape en la función de individuales cotizaciones, se da salida a esto:

<li style="'margin:20px;'">123</li> 

Tampoco es correcto, y estoy obligado a cualquier salida de una etiqueta de estilo en blanco si no se requiere ningún estilo.

Respuesta

6

cambiar su método de modo que devuelve un IHtmlString lugar, algo como esto:

public IHtmlString GetStyle(int? size) 
{ 
    if(size > 99) 
     return new HtmlString("style=\"margin: 20px;\""); 
    else 
     return new HtmlString(""); 
} 
+0

gracias, eso es todo! – roryok

+0

Puede usar MVCHtmlString, aunque eso solo es realmente para MVC2 -> MVC3, iHtmlString proporciona más pruebas en el futuro. (HtmlString es .net 4) http://stackoverflow.com/questions/3382860/htmlstring-vs-mvchtmlstring –

+0

¿Cómo se muestra el resultado del retorno IHtmlString de GetStyle a la vista? Lo probé en MVC 5, funciona para el valor literal, pero no funciona para la cadena recuperada de SQL Server, como new HtmlString (stringvaluefromdb); – VincentZHANG

0

Si sólo omite las comillas alrededor del valor entonces se añadirán automáticamente.

public string GetStyle(int? size){ 
    if(size > 99) 
     return "style=margin:20px;"; 
    else 
     return ""; 
} 
+0

Esto no funciona si lo que intentas lograr es algo así como 'class =" style1 style2 "' – JDandChips

Cuestiones relacionadas