MVC3 Отправить форму на сайте jQuery Mobile - PullRequest
0 голосов
/ 30 ноября 2011

Я весь день искал ответ на этот вопрос и думал, что это будет просто.

У меня есть следующий код, заполняющий выпадающий список из базы данных, все работает нормально, выпадающий список заполняется и форма автоматически отправляется после выбора статьи, но не отправляет параметр назад и не сообщает действию 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.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Взлом, написанный работой Джона Аллерса

<script type="text/javascript">
    $(function () {
        $("#ArticleID").change(function () {
            var actionUrl = $('#TheForm').attr('action') + '/' + $('#ArticleID').val();
            $('#TheForm').attr('action', actionUrl);
            $('#TheForm').submit();
        });
    });
</script>
0 голосов
/ 30 ноября 2011

В обоих вызовах на Html.DropDownList вы устанавливаете имя выбора как ArticleID. Вам нужно изменить это на id.

@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" })){
                       // The first parameter has been changed from "ArticleID" to "id"
    @Html.DropDownList("id", (SelectList)ViewBag.ArticleId, "Please Select an Article")
}

См. Документацию MSDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...