首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC Helper 與模型繫結:Html.ActionLink、UpdateModel、TryUpdateModel 實作部落格設定頁面

     編輯:關於ASP.NET

前言

ASP.NET MVC 提供豐富的 HtmlHelper 產生表單元素,並內建 UpdateModel/TryUpdateModel 進行模型繫結。本文以部落格基本設定頁面為例,示範表單建立、驗證訊息顯示與 Controller 繫結邏輯。

View 表單建立

<p>
    <label for="Name">Blog 名稱</label>
    <%= Html.TextBox("Name") %>
    <%= Html.ValidationMessage("Name") %>
</p>
<p>
    <label for="Description">簡介</label>
    <%= Html.TextArea("Description") %>
    <%= Html.ValidationMessage("Description") %>
</p>
<p>
    <label for="PostsPerPage">每頁筆數</label>
    <%= Html.TextBox("PostsPerPage") %>
    <%= Html.ValidationMessage("PostsPerPage") %>
</p>

Controller Action 實作

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Setting(FormCollection form)
{
    var settings = BlogSettings.Instance;
    // 方式一:UpdateModel 直接繫結現有實例(失敗拋例外)
    // UpdateModel(settings, form.ToValueProvider());

    // 方式二:TryUpdateModel 回傳 bool,不拋例外(推薦)
    if (TryUpdateModel(settings, form.ToValueProvider()))
    {
        settings.Save(); // 儲存設定
        TempData["Message"] = "設定已更新";
        return RedirectToAction("Setting");
    }
    return View(settings);
}

Html.ActionLink URL 產生注意事項

<%= Html.ActionLink("首頁", "Index", "Home") %>
<!-- 輸出:首頁 -->

產生的 URL 受 Global.asax 路由註冊順序影響,先符合者優先。

自訂 Helper 擴充

可利用 C# 3.0 擴充方法擴充 HtmlHelper:

public static class HtmlExtensions
{
    public static string MyCustomHelper(this HtmlHelper helper, string text)
    {
        return $"{text}";
    }
}

結語

善用 HtmlHelper 減少手寫 HTML,配合 TryUpdateModel 安全繫結並處理驗證失敗情境,是 MVC 表單處理的標準模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved