Форма частичного просмотра не будет отправлена ​​с использованием Bootstrap Modal

Вот кнопка, чтобы открыть модальное окно (которое работает):

<button data-toggle="modal" data-target="#modal-addItem-@sectionCount-@rowCount" class="btn btn-success">Add New List Item</button>

Вот модальное окно:

<div id="modal-addItem-@sectionCount-@rowCount" role="dialog" aria-hidden="true" aria-labelledby="modal-addItem-@sectionCount-@rowCount" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title">Added List Item</h4>
            </div>
            @Html.Partial("_SelectItemType", new ListItemsViewModel { listID = theLists.listID })
        </div>
    </div>
</div>

Вот это частичное представление Обновлено:

@using (Html.BeginForm("SelectItemType", "ListItems", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.listID)

    <div class="modal-body">
        <div class="form-group">
            <b class="control-label col-md-4">Select List Item Type:</b>
            <div class="col-md-8">
                @Html.DropDownListFor(model => model.ItemTypes.itemTypeName, DropDown.GeneralListCreator(get.getItemTypes(true), get.getItemTypes(false))) //This gets a list of item types
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <a class="btn btn-default" data-dismiss="modal">Close</a>
        <input type="submit" value="Next Step &raquo;" class="btn btn-primary" />
    </div>
}

Поэтому, когда я нажимаю на кнопку, открывается модальное окно, как и должно. Когда я нажимаю кнопку «Следующий шаг >>», которая является кнопкой отправки в форме. Никакой обратной связи, никакой отправки формы ... ничего не происходит.

Я не уверен, почему это не сработает ... может кто-нибудь указать, что я делаю не так? Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.

Заранее спасибо.


ОБНОВЛЕНИЕ: я попытался удалить сценарий раздела (потому что он уже присутствует в представлении), как указал Крис, но он все еще не отправляется.


person Termato    schedule 18.11.2014    source источник
comment
В вашем коде нет ничего, что могло бы помешать этому работать. Хотя, FWIW, вы не можете реализовать раздел внутри частичного представления. Однако это не должно вызвать никаких проблем; он просто не будет включать ваши сценарии проверки.   -  person Chris Pratt    schedule 18.11.2014
comment
У вас включена проверка на стороне клиента? Может, это не мешает отправке формы?   -  person Vsevolod Goloviznin    schedule 18.11.2014
comment
Хорошая подсказка, я добавил это под раскрывающимся списком в моем частичном представлении @Html.ValidationMessageFor(model => model.ItemTypes.itemTypeName) и получил следующее сообщение: Имя типа элемента должно содержать не менее 2 символов и не более 250 символов. что является подтверждением. сообщение. Я постараюсь устранить неполадки еще немного здесь. Хороший указатель.   -  person Termato    schedule 18.11.2014


Ответы (2)


Так что ответ, конечно же, был прост. Я нашел эту страницу: ASP .NET MVC Disable Проверка на стороне клиента на уровне поля

Это привело меня прямо к ответу, который любезно указал Всеволод. Проверка включена на стороне клиента. Раньше я не выводил сообщение, поэтому не знал. Когда я добавил:

@Html.ValidationMessageFor(model => model.ItemTypes.itemTypeName)

в форму я смог увидеть сообщение:

The Item Type Name must be at least 2 characters long and no longer than 250 characters.

Мой раскрывающийся список заполнялся следующим методом: get.getItemTypes(false), который возвращал Имена, если это правда, и Числа (ids), если ложь. Идентификаторы были от 1 до 9 и представляли собой ОДНУ цифру. Мне потребовалось 2 символа для проверки. Следовательно, он не подчинялся.

Мое решение, предложенное ссылкой вверху:

@{ Html.EnableClientValidation(false); }
@Html.DropDownListFor(model => model.ItemTypes.itemTypeName, DropDown.GeneralListCreator(get.getItemTypes(true), get.getItemTypes(true)))
@Html.ValidationMessageFor(model => model.ItemTypes.itemTypeName)
@{ Html.EnableClientValidation(true); }

По какой-то причине, даже после того, как я изменил метод get.getItemTypes(false), чтобы возвращать имена (отправить истинное значение), проверка по-прежнему не работала должным образом, поэтому мне пришлось выключить и снова включить его.

Всем спасибо за помощь.

person Termato    schedule 18.11.2014

Вот что мне помогло:

Попробуйте добавить

data-toggle="modal" data-target="#modal-addItem-@sectionCount-@rowCount"
to your submit. That should close it and allow your data to submit.

Посмотрите на это .modal('toggle') в документации по начальной загрузке.

person James G    schedule 15.06.2018