Кнопка "Отправить" не отправляется - PullRequest
1 голос
/ 09 ноября 2010

Интересная проблема.

При изменении содержания проекта я разбил одно приложение на два. Я создал новый проект вместо того, чтобы пытаться взломать существующее приложение на две части, и повторно использовал большую часть ранее написанного кода. Я дошел до последней ошибки, которая заставляет меня вырывать волосы.

У меня есть список элементов с флажком в каждой строке, чтобы позволить пользователю работать с несколькими строками одновременно. У меня есть некоторая логика проверки jQuery, чтобы убедиться, что в раскрывающемся списке выбран вариант и выбрана хотя бы одна строка. Это работает, однако, кажется, ничего не происходит, когда я нажимаю кнопку отправки. Я даже установил точку останова в первой строке кода функции, и она никогда не срабатывает. Код такой же, за исключением изменения действия с Display на Index. Есть мысли?

Код следует:

<% using (Html.BeginForm("Index", "Timesheet", FormMethod.Post, new { Id = "form1" }))
   { %>
<%= Html.DropDownList("DropDownAction", new SelectList(Model.Actions, "Value", "Text"), "(Select)", new { Class = "required" })%>
<input type="submit" value="Submit" />
....
<% } %>

TimesheetController.cs

    //
    // GET: /Timesheet/
    [Authorize]
    public ActionResult Index()
    {
        ....
    }

    //
    // POST: /Timesheet/
    [HttpPost, Authorize]
    public ActionResult Index(int[] CbSelect, string DropDownAction, SupervisorCredentials user)
    {
        foreach (int id in CbSelect)
        {
            ...

        }

        return RedirectToAction("Index");
    }

Сгенерированный HTML:

<form Id="form1" action="/Timesheet" method="post"><select Class="required" id="DropDownAction" name="DropDownAction"><option value="">(Select)</option>
<option value=" ">Approve</option>
<option value="P">Paper Signature</option>
<option value="A">Absent Employee</option>
</select>
<input type="submit" value="Submit" />

Обновление: я удалил jQuery и теперь получаю нулевое исключение. Мои опубликованные значения DropDownAction=P&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744. Почему бы public ActionResult Index(int[] CbSelect, string DropDownAction) не сработать? Я получаю правильное значение в DropDownAction и null в CbSelect.

Ответы [ 4 ]

3 голосов
/ 09 ноября 2010

Не знаю почему, но, очевидно, в моем разделе проверки jQuery у меня было debug: true. Похоже, что это предотвращает фактическую отправку формы. Я понятия не имею, как это туда попало. Я не добавил это. Форма работает сейчас, хотя.

2 голосов
/ 09 ноября 2010

Отладка таких ситуаций может быть очень неприятной.Приобретите инструмент, подобный http://www.fiddler2.com/fiddler/version.asp, запустите его, и он будет отслеживать все веб-запросы, чтобы вы могли легко увидеть ответ и посмотреть, действительно ли ваша форма отправляется.

0 голосов
/ 09 ноября 2010

Вы изменили маршрутизацию по умолчанию?

Кроме того, HTML-код, который вы разместили, не имеет закрывающего тега </form>. Это там?

0 голосов
/ 09 ноября 2010

Скорее всего, то, что в действительности публикуется в форме, не соответствует тому, что MVC ожидает, учитывая сигнатуру метода вашего действия.Если его вообще не публикуют (т.е. никогда не попадают на сервер, можно проверить с помощью firebug или аналогичного), как будет выглядеть вывод HTML вашего представления?

...