2016-03-01 94 views
0

我遇到過所有其他類似的問題,但我無法理解如何對我的案例或解決方案實施解決方案。這是我在MVC中的第二天,我被困在可能非常簡單的事情中。MVC Dropdownlist給出對象引用未設置爲對象錯誤的實例

我想要做的是,檢查一個條件並返回到註冊頁面,如果條件滿足,則會發出警告。發生這種情況時,dropdownlist會顯示標題錯誤。

在觸發SP之前檢查條件。有問題的是CompanyExists。

[HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public ActionResult Register(RegisterViewModel model, FormCollection coll) 
     { 
      bool UserExists = CompanyDB.User_Check_Exists(model.Email); 
      bool CompanyExists = CompanyDB.Company_Check_Exists(model.CountryCode, model.TaxIdNo); 

      if (!ModelState.IsValid) 
      { 
       return View(model); 
      } 

      if (CompanyExists) 
      { 
       ViewBag.CompanyExists = CompanyExists; 

       return View(model); 
      } 

      if (coll["chkContract"] != "on") 
      { 
       ViewBag.ContractError = true; 
       return View(model); 
      } 

      ViewBag.UserExists = UserExists; 

      if (UserExists) 
      { 
       string UserEmail = model.Email; 
       ViewBag.UserEmail = model.Email; 
      } 
      string error = String.Empty; 
      RegistrationDB.Registration_Add(model, out error); 
      return View("RegisterComplete"); 
     } 

下拉人口:

public class MVCUtility 
    { 
     public static ClaimsIdentity CurrentClaimsIdentity{ 
      get { return null; }  
     } 

     public static List<SelectListItem> DataTableToListItem(DataTable Table, string ValueField, string TextField) { 
      List<SelectListItem> items = new List<SelectListItem>(); 

      foreach (DataRow dr in Table.Rows) { 
       SelectListItem item = new SelectListItem() { Value = dr[ValueField].ToString(), Text = dr[TextField].ToString() }; 
       items.Add(item); 
      } 
      return items; 
      //SelectList list = new SelectList(items); 
      //return list; 
     } 
    } 

,並在register.cshtml

@Html.Bootstrap().DropDownListFor(t => t.CountryCode, MVCUtility.DataTableToListItem((DataTable)ViewBag.CountryList, "Code", "Name")).HtmlAttributes(new { @style = "width:100%;" }) 

下拉線,我從是其他的問題明白了,我需要將數據發送到重新填充下拉列表在return(View);行之前。我不知道如何用這些參數來管理它。

+3

因爲'ViewBag.CountryList'是'null' –

回答

1

ViewBag.CountryList爲空。

在控制器 沒有選定值

ViewBag.CountryList = new MultiSelectList("Bind Your Country List", "Code", "Name"); 

與選定的價值

ViewBag.CountryList = new MultiSelectList("Bind Your Country List", "Code", "Name","Selected Code"); 

在CSHTML頁

@Html.DropDownList("CountryCode", (MultiSelectList)ViewBag.CountryList, new { id = "CountryCode" }) 
相關問題