1. 程式人生 > >@Helper輔助方法和@functions自定義函數

@Helper輔助方法和@functions自定義函數

技術分享 blog cat function cnblogs mod con 頁面 -s

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>

http://www.cnblogs.com/developersupport/p/WebAPI-Security.html

@Helper輔助方法和@functions自定義函數