2015-12-02 23 views
0

使用MVC 4:這是在任何可能的方式來實現以下,而無需在使用它的每一個視圖中@helper雙組分在線:全球非命名空間@helper意見.NET MVC

@helper _(string msg) { 
    @msg 
} 
<p>@_("Hello")</p> 

...因此,佈局文件有它,或者它被放置在其他地方共享?即只有在給定的視圖中:@_("Hello")

我已經試過:

  • 將它Views/Shared/_Layout.cshtml(不工作)
  • 將它添加到App_Code(工程,但命名空間)
  • 用於提示的幾個小時搜索谷歌

我知道,我可以只使用一個命名空間,但我倒是真的喜歡避免了可讀性和笑代碼。

我還是比較新的.NET一般所以任何幫助,將不勝感激。

+0

如何 「命名空間」 影響可讀性?它只是文件開頭的一個'using'語句。 –

+0

如果要在所有視圖中使用助手方法,請將名稱空間添加到您擁有的每個視圖文件夾(非區域/區域)中的web.config。 –

+0

@YeldarKurmangaliyev:我可能會解釋自己錯了;我想避免:'@Utils ._(「Hello」)' – Lasse

回答

1

這可以解決,而無需創建一個幫手。使用擴展方法。

namespace WebApplication1 
{ 
    public static class WebViewPageExtensions 
    { 
    public static IHtmlString _(this WebViewPage page, string msg) 
    { 
     return new HtmlString(msg); 
    } 
    } 
} 

然後在你所有的觀點:

<p>@_("Hello")</p> 
+0

謝謝。正是我在找什麼!然而,我無法得到它的工作......我已經將您的示例添加到我的MVC項目的根目錄並將調整後的名稱空間作爲唯一更改。我還在Views/Web.config中添加了相同的命名空間。 – Lasse