Подтвердить что ты не робот

Могу ли я вернуть строку, используя синтаксис @helper в Razor?

У меня есть файл RazorHelpers.cshtml в app_code, который выглядит так:

@using Molecular.AdidasCoach.Library.GlobalConstants

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

Однако у меня есть случай, когда я хочу использовать результат как текст ссылки в @Html.ActionLink(...). Я не могу передать результат в строку.

Есть ли способ вернуть простые строки из помощников Razor, чтобы я мог использовать их как в HTML, так и в помощнике @Html?

4b9b3361

Ответ 1

Помощники бритвы возвращают объекты HelperResult.

Вы можете получить необработанный HTML, вызвав ToString().

Для получения дополнительной информации см. мой пост в блоге.

Ответ 2

В вашем случае, я думаю, это также сработало бы:

@(GlobalConfigs.GetTranslatedValue(key))

Дополнительная выборка:

@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)
    }
}

Ответ 3

Я не думаю, что есть способ сделать @helper вернуть другие типы, кроме HelperResult. Но вы можете использовать функцию с возвращаемым типом string, например.

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

затем

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

См. также http://www.mikesdotnetting.com/article/173/the-difference-between-helpers-and-functions-in-webmatrix

edit: MVC Razor: Результат помощника в html.actionlink предлагает вашему помощнику вернуть строку с помощью @Html.Raw(GlobalConfigs.GetTranslatedValue(key));