#眉標=MVC、ASP.NET、LINQ #副標=ASP.NET網站開發與應用 #大標=MVC Framework在ASP.NET開發上的實作 #作者=文/圖 王寧疆 ===<反灰>=============

加入說明

<%=Html.ValidationSummary()%>

<% using (Html.BeginForm("UserComment","UserComment", FormMethod.Post)) { %>
加入說明: <%=Html.TextBox("name", ViewData["name"] ?? "")%> <%=Html.ValidationMessage("name")%>
電子郵件: <%=Html.TextBox("email", ViewData["email"] ?? "")%> <%=Html.ValidationMessage("email")%>
說明: <%=Html.TextArea("Comment", ViewData["Comment"] ?? "")%> <%=Html.ValidationMessage("Comment")%>
<% } %>
============= ===<反灰>============= [HandleError] public class UserCommentController : Controller { [AcceptVerbs("GET")] public ActionResult UserComment() //名為UserComment的Action { return View(); } [AcceptVerbs("POST")] public ActionResult UserComment(string name, string email, string comment) //接受3個字串參數,名稱為UserComment的Action { ViewData["name"] = name; //填入ViewData集合 ViewData["email"] = email; //填入ViewData集合 ViewData["message"] = comment; //填入ViewData集合 if (string.IsNullOrEmpty(name)) //如果未輸入姓名 ModelState.AddModelError("name", "請輸入你的姓名!");//錯誤訊息到ModelState if (!string.IsNullOrEmpty(email) || !email.Contains("@")) //如果郵件格式錯誤 ModelState.AddModelError("email", "請輸入正確的電子郵件!");//錯誤訊息到ModelState if (string.IsNullOrEmpty(comment)) //如果未輸入說明 ModelState.AddModelError("comment", "請輸入說明!"); //錯誤訊息到ModelState if (ViewData.ModelState.IsValid) //如果資料通過驗証 { } return View(); } } ================ ===<反灰>============= routes.MapRoute( "UserComment", //Route名 "{controller}/{action}/{id}", //URL參數格式 new { controller = "UserComment", action = "UserComment", id = "" } //預設參數值 ); ================ ===<反灰>=============
  • <%= Html.ActionLink("加入說明", "UserComment", "UserComment")%>
  • ================ ===<反灰>============= ================ ===<反灰>============= using System.ComponentModel; namespace MvcValidation.Models { public partial class Region:IDataErrorInfo //令類別實作IDataErrorInfo介面  {   private Dictionary _errors = new Dictionary(); //建立存放錯誤訊息的集合 partial void OnRegionDescriptionChanging(string value) //處理RegionDescription欄位內容變更的方法 { if (string.IsNullOrEmpty(value)) //判斷RegionDescription欄位內容是否沒有值 _errors.Add("RegionDescription", "RegionDescription未輸入"); //將錯誤訊息填入到名稱為_errors的集合 } #region IDataErrorInfo 成員 public string Error //Error屬性 { get { return string.Empty; } //傳回空字串 } public string this[string columnName] //利用欄位名稱取得錯誤訊息的indexer { get { if (_errors.ContainsKey(columnName)) //判斷指定的欄位是否有對應的錯誤訊息 return _errors[columnName]; //取回指定欄位的錯誤訊息 return string.Empty; //傳回空字串 } } #endregion } } ================ ===<反灰>=============

    輸入Region資料

    <%=Html.ValidationSummary()%>

    <% using (Html.BeginForm("InputRegion","Region", FormMethod.Post)) { %>
    RegionID: <%=Html.TextBox("RegionID", ViewData["RegionID"] ?? "")%> <%=Html.ValidationMessage("RegionID")%>
    RegionDescription: <%=Html.TextBox("RegionDescription", ViewData["RegionDescription"] ?? "")%> <%=Html.ValidationMessage("RegionDescription")%>
    <% } %>
    ================ ===<反灰>============= public class RegionController : Controller { [AcceptVerbs("GET")] public ActionResult InputRegion() //名為InputRegion的Action { return View(); } [AcceptVerbs("POST")] public ActionResult InputRegion( [Bind(Exclude = "RegionID")] Region r) //接受Region型態的參數,名為InputRegion的Action { if (!ModelState.IsValid) //判斷輸入是否有錯 return View(); //不顯示任何內容 try { //視需要執行寫入資料到資料庫的動作 return RedirectToAction("InputRegion"); //控制權轉交給InputRegion的Action } catch //如果發生任何錯誤 { return View(); //不顯示任何任內容 } } } ================ ===<反灰>============= routes.MapRoute( "Region", // Route name "{controller}/{action}/{id}", //URL with parameters new { controller = "Region", action = "InputRegion", id = "" } //Parameter defaults ); ================ ===<反灰>=============
  • <%= Html.ActionLink("新增Region資料", "InputRegion", "Region")%>
  • ================