簡體   English   中英

值不能為空。 參數名稱:MVC5(DropDownlist)項目

[英]Value cannot be null. Parameter name: items MVC5(DropDownlist)

我的模態

public class Employee
{
    [Key]
    public int ID { get; set; }

    [MaxLength(10,ErrorMessage ="Max Lenght 20")]
    public string Name { get; set; }
    [MaxLength(20,ErrorMessage ="Max Lenght 20")]
    public string Address { get; set; }
    public decimal Salary { get; set; }
    [DataType(DataType.DateTime)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    [Display(Name ="Date of Joining")]
    public DateTime Dateofjoin { get; set; }
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }
    public List<CityModal> City { get; set; }
    [Display(Name="City")]
    public int CityId { get; set; }
    public string CityName { get; set; }


}
public class CityModal {
    public string CityId { get; set; }
    public string CityName { get; set; }
}

下拉列表視圖

<div class="form-group">
                @Html.LabelFor(model => model.CityId, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownListFor(model => model.CityId, new SelectList(ViewBag.city, "CityId", "CityName"), "Select")
                    @Html.ValidationMessageFor(model => model.CityId, "Please select the City", new { @class = "error" })
                </div>
            </div>

調節器

[HttpGet]
    public ActionResult Create()
    {
        using (RegMVCEntities obj = new RegMVCEntities())
        {
            ViewBag.city = obj.tblCities.Select(e => new CityModal
            {

                CityName = e.City,
                CityId = e.ID                    
            }).ToList();
        }
            return View();
    }
 [HttpGet]
    public ActionResult Edit(int id)
    {
        using (RegMVCEntities obj = new RegMVCEntities())
        {
            var query = (from reg in obj.tblRegistrations
                         join citi in obj.tblCities on reg.CityID equals citi.ID
                         where reg.ID == id
                         select new Employee
                         {
                             ID = reg.ID,
                             Name = reg.Name,
                             Address = reg.Address,
                             Salary = reg.Salary,
                             Dateofjoin = reg.DateOfJoining,
                             Email = reg.Email,
                             CityId = citi.ID,
                             CityName = citi.City
                         }).FirstOrDefault();

            /*var employee = obj.tblRegistrations.Where(m => m.ID == id).Select(e => new Employee {
                ID = e.ID,Name = e.Name, Address = e.Address, Dateofjoin = e.DateOfJoining, Salary = e.Salary, Email = e.Email
            }).FirstOrDefault();*/
            return View(query);
        }                
    }

在這里,我檢查了控制器查詢中是否具有結果並包含CityId,但查看顯示“值不能為null。參數名稱:items”。 我認為create方法遇到了一些我沒有遇到的麻煩。 需要幫助。

ViewBag.city是在Create操作的GET版本中設置的,但我想您可能已經忽略了在POST版本中再次設置它的情況。 但是,您已經發布了該代碼。 此外,也沒有在“ Edit操作中設置它。 這可能與當前問題無關,但是可能很快就會成為一個問題。

通常,例外情況是告訴您items參數(即SelectList構造函數的第一個參數)為null。 如果未在您的操作中設置ViewBag.city是什么。 由於它是您的GET版本,因此我只能假定當再次返回視圖以允許用戶進行必要的編輯時,由於驗證錯誤而收到此異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM