22

は、私がどのように見えるapp_codeでRazorHelpers.cshtmlファイルを持っている:Razorで@helper構文を使用して文字列を返すことはできますか?

@using Molecular.AdidasCoach.Library.GlobalConstants 

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

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

Razorヘルパーから平易な文字列を返す方法はありますか?HTMLと@Htmlヘルパーの両方で使用できますか?

答えて

24

剃刀ヘルパーはHelperResultを返します。

生のHTMLはToString()を呼び出して取得できます。

詳細については、my blog postを参照してください。

@(GlobalConfigs.GetTranslatedValue(key)) 

追加サンプル:あなたのケースでは

+0

D'OHを使用して文字列を返すことができます示唆しています!なぜ私はそれを考えなかったのか想像できません。ありがとう!割り当てられたウィンドウの後に受け入れます。 – Mathletics

13

は、私はこれも仕事だと思う

@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

を私はHelperResultより@helperリターン、他の種類を作るための方法はないと思います。しかし戻り値の型が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

編集:MVC Razor: Helper result in html.actionlinkは、あなたのヘルパー@Html.Raw(GlobalConfigs.GetTranslatedValue(key));

+0

清潔!私はそれが好きです – Mafii

関連する問題