簡體   English   中英

ASP.NET MVC SelectList中的錯誤。 值不能為null,參數名稱:items

[英]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.

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