Формулярът за частичен изглед няма да бъде изпратен чрез 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), който върна Имена, ако е вярно, и Числа (идентификационни номера), ако е невярно. Идентификационните номера бяха 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) за връщане на имената (изпращане в true), валидирането все още не работеше правилно, така че трябваше да го изключа и отново да го включа.

Благодаря на всички за помощта.

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') в документацията за bootstraps.

person James G    schedule 15.06.2018