2010-08-03 1 views
4

Эта линия вызывает у меня некоторые проблемы в приложении MVC я занимаюсь разработкойОшибка в ASP.NET MVC SelectList. Значение не может быть пустым, имя параметра: элементы

<%= Html.DropDownListFor(model => model.TypeID, new SelectList((IEnumerable)ViewData["TaskingTypes"], "TypeID", "TypeName"))%> 

Это вызывает ошибку в названии, когда два других необходимых полей в форме не являются заполняется. Когда поля заполняются, форма представляется и записывается в db, без проблем. У кого-нибудь есть идеи, почему валидация не подбирается и не передается в представление?

«TaskingTypes» - это объект, который имеет отношение «1 к многим» с объектом «Tasking». Foriegn ключ в 'Tasking' имеет значение '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); 

    } 

и это проверка класс

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; } 

} 

Большое спасибо за просмотр

ответ

4

Вам необходимы следующая строка:

ViewData["TaskingTypes"] = tt.GetAllTaskingTypes().ToList(); 

также в методе поста, прежде чем дать назад View, если есть ошибка проверки .... Это должно решить вашу проблему.

+0

Конечно ..... Спасибо, вы очень помогли, все еще изучая этот материал MVC. – MrBliz

Смежные вопросы