Ответ 1
Помощники бритвы возвращают объекты HelperResult
.
Вы можете получить необработанный HTML, вызвав ToString()
.
Для получения дополнительной информации см. мой пост в блоге.
У меня есть файл RazorHelpers.cshtml в app_code
, который выглядит так:
@using Molecular.AdidasCoach.Library.GlobalConstants
@helper Translate(string key)
{
@GlobalConfigs.GetTranslatedValue(key)
}
Однако у меня есть случай, когда я хочу использовать результат как текст ссылки в @Html.ActionLink(...)
. Я не могу передать результат в строку.
Есть ли способ вернуть простые строки из помощников Razor, чтобы я мог использовать их как в HTML, так и в помощнике @Html
?
Помощники бритвы возвращают объекты HelperResult
.
Вы можете получить необработанный HTML, вызвав ToString()
.
Для получения дополнительной информации см. мой пост в блоге.
В вашем случае, я думаю, это также сработало бы:
@(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)
}
}
Я не думаю, что есть способ сделать @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));