22

Ho un file RazorHelpers.cshtml in app_code che si presenta come:Posso restituire una stringa usando la sintassi @helper in Razor?

@using Molecular.AdidasCoach.Library.GlobalConstants 

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

Tuttavia, ho un caso in cui voglio usare il risultato come il testo del link in una @Html.ActionLink(...). Non riesco a trasmettere il risultato a una stringa.

C'è un modo per restituire stringhe semplici dagli helper di Razor in modo che sia possibile utilizzarli entrambi in HTML e all'interno di un helper @Html?

risposta

24

Gli helper del rasoio restituiscono gli oggetti HelperResult.

È possibile ottenere l'HTML puro chiamando ToString().

Per ulteriori informazioni, vedere my blog post.

+0

d'oh! non riesco a immaginare perché non ci ho pensato. Grazie! Accetterà dopo la finestra assegnata. – Mathletics

13

Nel tuo caso, credo che questo potrebbe anche funzionare:

@(GlobalConfigs.GetTranslatedValue(key)) 

campione supplementare:

@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

Non credo ci sia un modo per rendere @helper ritorno di altri tipi di HelperResult. Ma potresti usare una funzione con un tipo di ritorno string, ad es.

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

poi

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

Vedi anche http://www.mikesdotnetting.com/article/173/the-difference-between-helpers-and-functions-in-webmatrix

edit: MVC Razor: Helper result in html.actionlink suggerisce il vostro aiutante può restituire una stringa utilizzando @Html.Raw(GlobalConfigs.GetTranslatedValue(key));

+0

Pulito! mi piace – Mafii

Problemi correlati