[Asp .Net MVC]使用Razor自定HtmlHelper

HtmlHelper => 讓你可以在前端以C#語法生成 Html 標籤

簡單來說他就是生成一段html script

因為是程式產出的 所以可以很容易做一些動態字串的串接、跨頁面的表單元件reuse等等

 

考量這個案例

只要有身高跟體重我們就可以算出BMI值

我們試著使用HtmlHelper來計算

 

新增一個App_Code資料夾

再新增一個HtmlHelper

@helper GetBmi(double height, double weight)
{

var value = weight / Math.Pow((height / 100), 2);

    <span>@value</span>
}

 

在View裡面呼叫HtmlHelper

@model IEnumerable<Repository.Models.MySampleTable>
@{
    ViewBag.Title = "Hello World!";
}
<h2>@ViewBag.Title</h2>

<p>
    <br />
    <table class="table">
        <tr>
            <th>ID</th>
            <th>NAME</th>
            <th>BIRTHDAY</th>
            <th>HEIGHT</th>
            <th>WEIGHT</th>
            <th>BMI</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.ID</td>
                <td>@item.NAME</td>
                <td>@item.BIRTHDAY</td>
                <td>@item.HEIGHT</td>
                <td>@item.WEIGHT</td>
                <td>@MyHtmlHelper.GetBmi(item.HEIGHT,item.WEIGHT)</td>
            </tr>
        }
    </table>
</p>

如果在View裡VS不認識MyHtmlHelper的話,只要重開方案即可 (VS重開也可以)