У меня проблема с моей обратной записью из DropDownList. Я пытаюсь создать страницу, которая позволит пользователям создавать новый набор навыков, но набор навыков связан с категориями навыков, поэтому я использую DropDownList, чтобы пользователь мог выбрать категорию, к которой относится набор навыков, но я получаю это исключение :Значение ASP.NET MVC не может быть нулевым. on DropDownList
исключение типа «System.ArgumentNullException» произошло в System.Web.Mvc.dll, но не был обработан в пользовательском коде
Дополнительная информация: Значение не может быть пустым.
Это мои контроллеры для создания:
// GET: SkillSets/Create
public ActionResult Create()
{
var categoryIDs = db.Categories.Where(c => c.Active == 1).Select(x => x.IDCategory).Distinct();
List<SelectListItem> items = new List<SelectListItem>();
foreach (var t in categoryIDs)
{
SelectListItem s = new SelectListItem();
s.Text = t.ToString();//db.Categories.Where(c => c.IDCategory == t & c.Active == 1).Select(x => x.Category + ": " + x.C_Role).Single();
s.Value = t.ToString();
items.Add(s);
}
ViewBag.Campaign = items;
return View();
}
// POST: SkillSets/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "IDSkillset,IDCategory,Product,P_Version,Notes")] Models.SkillSetsModel ss)
{
try
{
if (ModelState.IsValid)
{
db.SkillSets.Add(ss);
db.SaveChanges();
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
И это DropDownList:
<div class="form-group">
@Html.LabelFor(model => model.IDCategory, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Campaign", new SelectList(ViewBag.Campaign, "Value", "Text"), new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.IDCategory, "", new { @class = "text-danger" })
</div>
</div>
Вот модель:
namespace ITSSkillsDatabase.Models
{
[Table("SkillSets")]
public class SkillSetsModel
{
[Key]
public int IDSkillset { get; set; }
public int IDCategory { get; set; }
public string Product { get; set; }
[Display(Name = "Product Version")]
public string P_Version { get; set; }
public string Notes { get; set; }
public virtual ICollection<PersonSkillsModel> PersonSkills { get; set; }
}
}
DropDownList работает для Получите часть метода create, там, похоже, есть проблемы w либо с представлением, либо с методом Post, поскольку заполняется DropDownList.
Где вы получаете эту ошибку? это в сообщении или получении страницы? – Canvas
Что ты Модель? Почему у вас есть привязка dropdownlist к свойству «Кампания», которое даже не существует (и все равно исключается вашим атрибутом '[Bind"]. Почему вы создаете 'SelectList' в контроллере, а затем создаете другой 'SelectList' из него в представлении? –
@Canvas Сообщение, поскольку ошибка возникает только при попытке создать набор навыков, DropDownList также полностью заполнен – TheHornyDonut