Я весь день искал ответ на этот вопрос и думал, что это будет просто.
У меня есть следующий код, заполняющий выпадающий список из базы данных, все работает нормально, выпадающий список заполняется и форма автоматически отправляется после выбора статьи, но не отправляет параметр назад и не сообщает действию ViewResults. Метод, какой элемент был выбран, поэтому я получаю сообщение об ошибке «id» в нуль. Если я вручную добавлю число для «id» в строку URL, все будет работать нормально.
Методы контроллера:
public ActionResult Index()
{
var db = new MvcFourEntities();
var query = db.Articles.Select(c => new { c.ArticleID, c.ArticleName });
ViewBag.ArticleId = new SelectList(query.AsEnumerable(), "ArticleID", "ArticleName", 0);
return View(db.Articles.ToList());
}
public ViewResult Details(int id)
{
Article article = db.Articles.Single(a => a.ArticleID == id);
return View(article);
}
Выпадающий список в представлении в двух разных формах, один для отправки через jQuery, а другой - нет, а также для передачи параметра:
JQuery:
@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" })){
@Html.DropDownList("ArticleID", (SelectList)ViewBag.ArticleId, "Please Select an Article")
}
Не отправка jQuery:
@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" }))
{
@Html.DropDownList(
"ArticleID",
(SelectList)ViewData["Articles"],
"Please Select an Article",
new
{
onchange = "document.getElementById('TheForm').submit();"
})
}
Я следую инструкциям, найденным здесь: http://www.mikesdotnetting.com/Article/128/Get-The-Drop-On-ASP.NET-MVC-DropDownLists
Где я ошибся ???
Приветствия
Mike.