1、首先說下@helper輔助方法,當我們在多個視圖中共用相同的方法的時候,可以把此方法剝離出來放到一個位置,此時就可以用到@Helper輔助方法,首先我們在解決方案右鍵添加
App_Code文件夾,然后添加一個cshtml文件,清空原有文件內容,然后把自定義的方法放進去,例如
@helper Show(int i) { if(i==1) { @:值為1 } else { @:值為其他 } }
2、當我們想實現更復雜的邏輯,比如想有返回值的時候可以通過@functions關鍵字來自定義函數,如下
@functions{ public static IHtmlString GetYesterday() { var theDay = DateTime.Now.AddDays(-1); return new HtmlString(theDay.ToString()); } }
注意這個地方一定得用static關鍵字來修飾,否則其他頁面通過類調用不到這個方法,並且返回到視圖的返回值類型必須定義為IHtmlString.
補充:當在頁面中引入新類型的時候,可能命名空間很長,導致頁面間好多重復代碼,可以在view頁面的開始位置導入命名空間,
如下:@model IEnumrable<MVC.Test.Animal>可以改為
@using MVC.Test
@model IEnumrable<Animal>;
當所有view頁面都會引入相同的命名空間的時候,可以采取一種方式避免每個頁面都要用@using來引入,在Views目錄下有web.config文檔,可以在此文檔下的
<system.web.webPages.razor>區段加入每個頁面都會用到的命名空間,如下:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="WebApplication1" />
</namespaces>
</pages>
</system.web.webPages.razor>
