茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    ASP.NET MVC @Helper輔助方法和@functons自定義函數(shù)的使用方法
    來源:易賢網(wǎng) 閱讀:1024 次 日期:2016-08-10 15:22:50
    溫馨提示:易賢網(wǎng)小編為您整理了“ASP.NET MVC @Helper輔助方法和@functons自定義函數(shù)的使用方法”,方便廣大網(wǎng)友查閱!

    本文主要介紹ASP.NET MVC中使用@Helper和@functons自定義一些代碼片段,方便視圖調(diào)用,從而達到減少重復(fù)代碼,快速開發(fā)的目的,希望對大家有所幫助。

    ASP.NET Razor 視圖具有.cshtml后綴,可以輕松的實現(xiàn)c#代碼和html標簽的切換,大大提升了我們的開發(fā)效率。但是Razor語法還是有一些棉花糖值得我們了解一下,可以更加強勁的提升我們的開發(fā)效率,減少開發(fā)bug的出現(xiàn)。

    Razor 采用的是@尾巴符號,正是這個符號成就了MVC開發(fā)效率的提升。下面了解一下和@相關(guān)的兩個可以重用的helper、functions。

    作為現(xiàn)代化的程序員,我們盡可能的遵守一個原則.不要重復(fù)你自己。所以能夠重構(gòu)的代碼我們都會合并,但是這是對于后臺代碼C#來說的,對于在View層 也可以進行一些簡單的業(yè)務(wù)邏輯,當然View層可以進行復(fù)雜的業(yè)務(wù)邏輯判斷,但是前輩說復(fù)雜的業(yè)務(wù)邏輯是Model或Controller的工作,View層的任務(wù)就是展示,業(yè)務(wù)邏輯應(yīng)當是越少越好。

    在View層進行的一些重構(gòu)有哪些呢?其中一個就是@helper  自定義片段。

    比如說我們要輸出一個數(shù)字,如果為0的話就輸出不存在,如果為其他數(shù)字就輸出存在,當然這個在強大的Razor語法下很容易的就可以搞定。

    @(ViewBag.IsEnabled == "0" ? "不存在" : "存在")

    但是如果當前頁面有很多這樣的相同邏輯的判斷會怎么樣呢?聰明的程序員肯定知道不能重復(fù)你自己的原則,所以我們就要進行重構(gòu),但是在View層怎么進行重構(gòu)呢?使用@helper可以解決這個問題。

    @helper Show(int count)

    {

      if (count == 0)

      {

        @:存在

      }

      else

      {

        @:不存在

      }

    }

    @(ViewBag.IsEnabled == 0 ? "不存在" : "存在")<br>@Show(0)    @*調(diào)用helper*@

    這樣我們在當前頁面多個位置進行調(diào)用來輸出,如果要修改可以修改一部分,而不至于全部都要修改。

    還有就要說了,我要在其他頁面也使用這個helper怎么辦呢?當然辦法還是有的,在app_code文件夾下添加一個視圖文件(假定為UIHelper.cshtml),將helper代碼復(fù)制,然后在需要調(diào)用的View頁面通過@UIHelper.Show(0)  來調(diào)用。因為app_code文件夾下的文件最終會被編譯成類。

    總結(jié):我們總結(jié)一下要實現(xiàn)根據(jù)不同情況進行輸出有多少種實現(xiàn)方式,當然我能想到的不會完全。

    1.通過helper進行全局的設(shè)置,讓所有需要判斷的頁面都調(diào)用這個helper方法。

    2.在后臺代碼判斷,然后輸出到前臺View。

    3.通過Html.Action()或Html.Partial()來獲取,當然如果簡單的還是采用helper,復(fù)雜的可以采用這種方式。

    4.通過自定義函數(shù)Functions來實現(xiàn)。

    自定義函數(shù)@functions  ,自定義函數(shù)式采用c#的語法來實現(xiàn)的代碼復(fù)用,只不過這個函數(shù)可以將html標簽輸出到頁面。

    //自定義函數(shù)@functions

    @functions{

      public IHtmlString Get(int count)

      {

        string result = "";

        if (count == 0)

        {

          result = "不存在";

        }

        else

        {

          result = "存在";

        }

        return new HtmlString(result);

      }

    }

    @Get(0)  //調(diào)用的自定義函數(shù)

    請注意,@functions 對應(yīng)的是Razor的代碼段,需要添加{},并且functions內(nèi)部是正規(guī)的c#方法。

    如果要在多個頁面同時使用這個functions,可以將這個方法移植到app_code中,假定文件名為UIHelper.cshtml。并且里面的方法必須定義為靜態(tài)的。這個很好理解,UIHelper相當于類名,而其中的functions就相當于方法,如果要通過類名.方法名來進行調(diào)用,則必須將方法定義成靜態(tài)的。

    UIHelper.cshtml文件代碼

    @helper ShowUnit(int count)

    {

      if (count == 0)

      {

        @:免費

        }

      else

      {

        @count

      }

    }

    @functions {

      public static IHtmlString Check(int count)

      {

        string result = "";

        if (count == 0)

        {

          result = "fsdfsdfsdfd";

        }

        else

        {

          result = count.ToString();

        }

        return new HtmlString(result);

      }

    }

    //自定義函數(shù)@functions

    @functions{

      public static IHtmlString Get(int count)

      {

        string result = "";

        if (count == 0)

        {

          result = "不存在";

        }

        else

        {

          result = "存在";

        }

        return new HtmlString(result);

      }

    }

    總結(jié):helper針對的是直接輸出html內(nèi)容并且具有簡單的邏輯的情況,并且helper沒有任何返回值,而functions自定義函數(shù)則要強大很多,如果functions需要返回html內(nèi)容,那么返回值是IHtmlString類型,如果不需要返回值,則可以設(shè)置為void,但是如果沒有返回值也就失去了定義function的意義,所以一般返回值均為IHtmlString。對于View層的重構(gòu),我們可以采用helper和自定義函數(shù)functions的方式來實現(xiàn)。

    補充:當在頁面中引入新類型的時候,可能命名空間很長,導(dǎo)致頁面間好多重復(fù)代碼,可以在view頁面的開始位置導(dǎo)入命名空間,

    如下:@model IEnumrable<MVC.Test.Animal>可以改為

    @using MVC.Test

    @model IEnumrable<Animal>;

    當所有view頁面都會引入相同的命名空間的時候,可以采取一種方式避免每個頁面都要用@using來引入,在Views目錄下有web.config文檔,可以在此文檔下的

    <system.web.webPages.razor>區(qū)段加入每個頁面都會用到的命名空間,如下:

    <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>

    更多信息請查看網(wǎng)絡(luò)編程

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)