31

app_code次のようなRazorHelpers.cshtml ファイルがあります。

@using Molecular.AdidasCoach.Library.GlobalConstants

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

ただし、結果を のリンク テキストとして使用したい場合があります@Html.ActionLink(...)。結果を文字列にキャストできません。

HTML とヘルパー内の両方で使用できるように、Razor ヘルパーからプレーン文字列を返す方法はあります@Htmlか?

4

4 に答える 4

33

Razor ヘルパーはHelperResultオブジェクトを返します。

を呼び出すことで生の HTML を取得できますToString()

詳細については、私のブログ投稿を参照してください。

于 2012-05-04T14:44:10.173 に答える
18

@helper以外の型を返す方法はないと思いますHelperResultstringただし、戻り値の型がの 関数を使用することもできます。

@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: Helper result in html.actionlinkは、ヘルパーが次を使用して文字列を返すことができることを示唆しています@Html.Raw(GlobalConfigs.GetTranslatedValue(key));

于 2016-05-26T20:52:46.830 に答える
16

あなたの場合、これもうまくいくと思います:

@(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)
    }
}
于 2013-08-31T21:16:52.237 に答える