![](/img/trans.png)
[英]MVC3 asp.net error: Value cannot be null. Parameter name: items on dropdownlist
[英]Error in ASP.NET MVC SelectList. Value Cannot be null, parameter name: items
這條線在我正在開發的MVC應用程序中引起了一些問題
<%= Html.DropDownListFor(model => model.TypeID, new SelectList((IEnumerable)ViewData["TaskingTypes"], "TypeID", "TypeName"))%>
當未填寫表單中的其他兩個必填字段時,它會導致標題中的錯誤。填寫字段時,表單將被提交並記錄在數據庫中,沒有任何問題。 任何人都有任何想法為什么驗證沒有被提取並轉移到視圖?
'TaskingTypes'是與'Tasking'實體具有1對多關系的實體。 'Tasking'中的foriegn鍵是'TypeID'
堆棧跟蹤的前2行是:
[ArgumentNullException: Value cannot be null.
[Parameter name: items]
System.Web.Mvc.MultiSelectList..ctor(IEnumerable items, String dataValueField, String dataTextField, IEnumerable selectedValues) +262322
System.Web.Mvc.SelectList..ctor(IEnumerable items, String dataValueField, String dataTextField) +31
這是控制器
[AcceptVerbs(HttpVerbs.Get),Authorize]
public ActionResult Create(){
Tasking tasking = new Tasking()
{
Created_On = DateTime.Now
};
ViewData["TaskingTypes"] = tt.GetAllTaskingTypes().ToList();
return View(tasking);
}
[AcceptVerbs(HttpVerbs.Post),Authorize]
public ActionResult Create(Tasking tasking)
{
if(TryUpdateModel(tasking)){
tasking.Created_On = DateTime.Now;
tasking.Created_By = User.Identity.Name;
taskingRepository.Add(tasking);
taskingRepository.Save();
return RedirectToAction("Details", new { id = tasking.TaskingID });
}
return View(tasking);
}
這是Validation類
public class Tasking_Validation
{
[Required(ErrorMessage = "Please select a tasking type")]
public string TypeID { get; set; }
[Required(ErrorMessage = "Tasking Title is Required")]
[StringLength(255, ErrorMessage="Title cannot be longer than 255 characters")]
public string Title { get; set; }
[Required(ErrorMessage = "Location is Required")]
[StringLength(255, ErrorMessage = "Location cannot be longer than 50 characters")]
public string Location { get; set; }
}
非常感謝您的期待
您需要以下行:
ViewData["TaskingTypes"] = tt.GetAllTaskingTypes().ToList();
如果有驗證錯誤,你也可以在你的帖子方法中回饋View ....那應該可以解決你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.