22

Tôi có một tập tin RazorHelpers.cshtml trong app_code trông giống như:Tôi có thể trả về một chuỗi bằng cú pháp @helper trong Razor không?

@using Molecular.AdidasCoach.Library.GlobalConstants 

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

Tuy nhiên, tôi có một trường hợp tôi muốn sử dụng kết quả như các văn bản liên kết trong một @Html.ActionLink(...). Tôi không thể đưa kết quả vào một chuỗi.

Có cách nào để trả lại chuỗi đơn giản từ trình trợ giúp Razor để tôi có thể sử dụng cả hai trong HTML và trong trình trợ giúp @Html?

Trả lời

24

Người giúp đỡ dao cạo trả về HelperResult đối tượng.

Bạn có thể nhận HTML thô bằng cách gọi ToString().

Để biết thêm thông tin, hãy xem my blog post.

+0

d'oh! không thể tưởng tượng được tại sao tôi không nghĩ về điều đó. Cảm ơn! Sẽ chấp nhận sau khi cửa sổ được phân bổ. – Mathletics

13

Trong trường hợp của bạn, tôi nghĩ rằng điều này cũng sẽ làm việc:

@(GlobalConfigs.GetTranslatedValue(key)) 

mẫu khác:

@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

Tôi không nghĩ rằng có một cách để làm cho @helper trở lại loại trừ HelperResult. Nhưng bạn có thể sử dụng hàm có kiểu trả về là string, ví dụ:

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

sau đó

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

Xem thêm http://www.mikesdotnetting.com/article/173/the-difference-between-helpers-and-functions-in-webmatrix

chỉnh sửa: MVC Razor: Helper result in html.actionlink gợi ý helper bạn thể trả về một chuỗi bằng cách sử dụng @Html.Raw(GlobalConfigs.GetTranslatedValue(key));

+0

Làm sạch! tôi thích nó – Mafii

Các vấn đề liên quan