22

Tengo un archivo RazorHelpers.cshtml en app_code que se parece a:¿Puedo devolver una cadena usando la sintaxis de @helper en Razor?

@using Molecular.AdidasCoach.Library.GlobalConstants 

@helper Translate(string key) 
{ 
    @GlobalConfigs.GetTranslatedValue(key) 
} 

Sin embargo, tengo un caso en el que quiero usar el resultado como el texto del enlace en un @Html.ActionLink(...). No puedo convertir el resultado en una cadena.

¿Hay alguna manera de devolver cadenas simples de ayudantes Razor para que pueda usarlas tanto en HTML como dentro de un ayudante @Html?

Respuesta

24

Ayudantes de afeitar devuelven HelperResult objetos.

Puede obtener el código HTML sin procesar llamando al ToString().

Para obtener más información, vea my blog post.

+0

d'oh! No puedo imaginar por qué no pensé en eso. ¡Gracias! Aceptará después de la ventana asignada. – Mathletics

13

En su caso, creo que esto también funcionaría:

@(GlobalConfigs.GetTranslatedValue(key)) 

muestra adicional:

@helper GetTooltipContent() 
{  
    if(Model.SubCategoryType == SUBCATTYPE.NUMBER_RANGE) 
    { 
     @(string.Format("{0} to {1}", Model.SubCategoryMinimum, Model.SubCategoryMaximum)) 
    } 
    else if(Model.SubCategoryType == SUBCATTYPE.NUMBER_MAXIMUM) 
    { 
     @("<= " + Model.SubCategoryMaximum) 
    } 
    else if(Model.SubCategoryType == SUBCATTYPE.NUMBER_MINIMUM) 
    { 
     @(">= " + Model.SubCategoryMinimum) 
    } 
} 
11

No creo que hay una manera de hacer @helper retorno distintos tipos de HelperResult. Pero puede usar una función con un tipo de devolución de string, p.

@functions { 
    public static string tr(string key) { 
     return GlobalConfigs.GetTranslatedValue(key); 
    } 
} 

continuación

@Html.ActionLink(tr("KEY"), "action", "controller")

Véase también http://www.mikesdotnetting.com/article/173/the-difference-between-helpers-and-functions-in-webmatrix

edición: MVC Razor: Helper result in html.actionlink sugiere su ayudante puede devolver una cadena utilizando @Html.Raw(GlobalConfigs.GetTranslatedValue(key));

+0

¡Limpio! me gusta – Mafii

Cuestiones relacionadas