[asp.net][.net MVC] 自訂 HTML HELPER 擴充方法

有時候在View裡面會透過Controller Return View(model),

把資料顯示在View上面,但有些時候讀出來的資料會需要經過判斷而有不同的顯示

 

這時候有甚麼方式可以做?

 

1.直接寫在View上,用Razor判斷

 

@if(判斷式)

  HTML語法顯示

 else

  HTML語法顯示

 

但有沒有更好的方法?

 

我覺得透過擴充 HTML HELPER 的方法會讓View看起來更乾淨

 

那該如何擴充HTML HELPER?

 

因為要擴充所以類別、方法一定要是公開(public)、靜態(static)的

 

這邊我舉個簡單的例子

  public static HtmlString DisplayMessageStatusName(this HtmlHelper htmlHelper, string test)

        {

            string messageStatusName = "";

            if (test == "0")

            {

                messageStatusName = "未核定";

            }

            else if (test == "1")

            {

                messageStatusName = "已核定";

            }

            return new MvcHtmlString($"<span>{messageStatusName}</span>");

        }

這樣在 View 前端就可以在 HTML 裡面呼叫了

 

<td>@Html.DisplayMessageStatusName(Model.MessageStatus)</td>

 

而不用在View 裡面呈現一堆判斷式

 

我想這是在開發View上面一個滿不錯的選擇吧!