2010-05-28 44 views
0

我正在驗證asp.net MVC框架中的表單。如何在驗證MVC中的表單時檢查空對象參考

我現在正專注於服務器端驗證。我遇到了一個我不確定如何糾正的錯誤。

System.NullReferenceException:未將對象引用設置爲對象的實例。

拋出的錯誤代碼是:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create([Bind(Exclude="ID")] MembersCreate mc) 
    { 
     mc.Modules = ModuleListDataContext.GetModuleList(); 
     ViewData.Model = mc; 

     //Validation using ModelState 

     // 
     // 
     //line below errors when form field is empty 
     // 
     if ((string)mc.Member.Username.Trim() == "") 
      ModelState.AddModelError("Member.Username", "Username is required."); 

     if (!ModelState.IsValid) 
      return View(); 

     try 
     { 
      // TODO: Add insert logic here 

      return RedirectToAction("Index","Home"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

當我把空格,因爲我想它執行完全場,但如果我離開這個領域的空白,並按下提交我得到的錯誤。

什麼是避免此錯誤並仍然驗證空白表單字段的最佳方法?

感謝所有 -

回答

3
if (string.IsNullOrEmpty(mc.Member.Username) || (mc.Member.Username.Trim()==string.Empty)) 
{ 
    ModelState.AddModelError("Member.Username", "Username is required."); 
} 
+0

由於一噸!這是有效的,但我不明白這是如何工作的,我嘗試的其他代碼沒有。它似乎使用與以前相同的參考。 – quakkels 2010-05-28 17:34:50

+0

如果字段用戶名中沒有數據,則相關屬性將爲空,因此您無法調用trim,所以它所做的第一件事是檢查用戶名屬性是否爲空,如果不檢查它是否僅包含空格 – Gregoire 2010-05-28 17:39:19

+0

非常感謝解釋。 – quakkels 2010-05-28 18:19:54