0

모델System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 드롭 다운리스트

public class Employee 
    { 
     public int EmployeeID { get; set; } 
     public string Title { get; set; } 
     [Required(ErrorMessage = "Please enter first name.")] 
     [StringLength(500)] 
     public string FirstName { get; set; } 
     public string MI { get; set; } 
     [Required(ErrorMessage = "Please enter last name.")] 
     [StringLength(500)] 
     public string LastName { get; set; } 
     public string Gender { get; set; } 

     [Required(ErrorMessage = "Please select date of birth.")] 
     public Nullable<System.DateTime> DateOfBirth { get; set; } 

     [Required(ErrorMessage = "Please enter email.")] 
     [StringLength(500)] 
     [EmailAddress] 
     public string Email { get; set; } 

     [Required(ErrorMessage = "Please enter street.")] 

     [StringLength(500)] 
     public string Street { get; set; } 

     [Required(ErrorMessage = "Please enter state.")] 
     [StringLength(50)] 
     public string State { get; set; } 

     [Required(ErrorMessage = "Please enter city.")] 
     [StringLength(50)] 
     public string City { get; set; } 

     [Required(ErrorMessage = "Please enter country.")] 
     [StringLength(50)] 
     public string Country { get; set; } 

     [Required(ErrorMessage = "Please enter post code.")] 
     [StringLength(6)] 
     public string PostCode { get; set; } 

     [Required(ErrorMessage = "Please enter home phone.")] 
     public string HomePhone { get; set; } 

     [Required(ErrorMessage = "Please enter mobile phone.")] 

     public string MobilePhone { get; set; } 


    } 

컨트롤러 방법

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(Employee employee) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Employees.Add(employee); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(employee); 
} 

보기 부트 스트랩

@model EmployeeManagementSystem.Models.Employee 

@{ 
    ViewBag.Title = "Create"; 
} 


<h2>Create</h2> 

<div class="row-fluid"> 
    <div class="span12"> 
     @using (Html.Bootstrap().Begin(new Form().Id("CreateEmployee").Type(FormType.Inline))) 
     { 

      @Html.AntiForgeryToken() 

      <div class="span12"> 

       <fieldset> 
        <div class="span4"> 

         <legend>Employee Info</legend> 

         @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.FirstName).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
         @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.LastName).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
         @Html.Bootstrap().ControlGroup().DropDownListFor(m => m.Gender, ViewBag.GenderList as SelectList).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
         @Html.Bootstrap().ControlGroup().Class("input-append date").TextBoxFor(x => x.DateOfBirth).Size(InputSize.BlockLevel).AppendIcon(Icons.calendar).ShowValidationMessage(true, HelpTextStyle.Block) 
         @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Email).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
        </div> 
        <div class="span8 "> 
         <legend>Contact Details</legend> 

         @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Street).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 

         <div class="span6" style="margin-left:0px"> 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.City).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.State).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.HomePhone).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block).HtmlAttributes(new Dictionary<string, Object> { { "data-mask", "(99999)(999999)" } }) 
         </div> 
         <div class="span6"> 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.PostCode).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Country).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block) 
          @Html.Bootstrap().ControlGroup().TextBoxFor(x => x.MobilePhone).Size(InputSize.BlockLevel).ShowValidationMessage(true, HelpTextStyle.Block).HtmlAttributes(new Dictionary<string, Object> { { "data-mask", "+99 (9999)(999999)" } }) 


         </div> 
        </div> 
       </fieldset> 

       @Html.Bootstrap().SubmitButton().Style(ButtonStyle.Primary) 
       @Html.Bootstrap().ActionLinkButton("Cancel", "Index").Style(ButtonStyle.Default) 


      </div> 
     } 
    </div> 
</div> 

@section Scripts { 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      //$('[rel=tooltip]').tooltip(); 

      $('#CreateEmployee .input-append.date').datepicker({ 
       startView: 2, 
       autoclose: true 
      }); 

     }); 
    </script> 

    @Scripts.Render("~/bundles/jqueryval") 
    @Scripts.Render("~/bundles/BootstrapFormHelpersJS") 
    @Styles.Render("~/Content/BootstrapFormHelpersCSS") 
} 
+0

내가 이것을 보았을 때마다 목록이 초기화되지 않았기 때문입니다. get 메소드를보고 모든 목록이 초기화되었는지 확인하십시오. –

+0

'NullReferenceException '의 거의 모든 경우가 같습니다. 일부 힌트는 "[.NET의 NullReferenceException은 무엇입니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)"를 참조하십시오. –

답변

0

안녕이 내 컨트롤러의 방법을 얻을 수 있습니다.

[HttpGet] 
     public ActionResult Create() 
     { 
      List<string> genders = new List<string>(); 
      genders.Add("--Select--"); 
      genders.Add("Male"); 
      genders.Add("Female"); 
      genders.Add("Not Defind"); 
      ViewBag.GenderList = new SelectList(genders, "--Select--"); 
      return View(); 
     } 
+0

질문에 편집되어 있어야하며 대답으로 게시되어서는 안됩니다. – madth3

관련 문제