ASP.NET MVC表單驗證
- 2009-02-03
- 20591
- 0
今天算是開始第一個ASP.NET MVC專案的製作,第一個遇到的問題就是表單的驗證,原本以為內建的驗證可以直接應付,沒想到那玩意實在太陽春了。
當你使用的是ASP.NET MVC RC1的版本時可以用內建的模板建立出基本的Create View而欄位都會有基本的驗證如下
<%= Html.TextBox("username") %> <%= Html.ValidationMessage("username") %>
demo原本天真的認為他至少會幫我驗證null 沒想到事與願違,只有寫這樣的時候預設就是驗證資料型別,比如你資料庫開INT你就不能寫"A"進去其餘的一切允許阿!!當然這樣是不可能用的參考了內建範本的AccountController.cs我們可以找到基本的驗證寫法。
if (String.IsNullOrEmpty(username)) { ModelState.AddModelError("username", "You must specify a username."); }
是的ModelState擁有一個AddModelError的方法,可以對應到View的欄位利用這種方式我們可以很簡單的寫出驗證的code,不過如果你是使用LINQ to SQL還有另一招可以用,自行實做 partial method來驗證
partial void OnValidate(System.Data.Linq.ChangeAction action) { if (action == System.Data.Linq.ChangeAction.Insert) { if (this._username == null) { throw new Exception("請輸入姓名"); } } }
然後就在controller加上try catch就可以了
try { ... } catch (Exception ex) { ModelState.AddModelError("username", ex.Message); }
回應討論