Tshumore Ответов: 1

Asp razor form submit не работает


У меня есть форма Razor MVC 5, которая отправляет данные в базу данных sql. Когда я нажимаю кнопку Отправить, форма просто перезагружается, и значения формы сохраняются. Проверяя в базе данных, я вижу, что никакие значения не зафиксированы.
У меня есть почтовая версия ActionResult, уже украшенная [HttpPost]. Кроме того, в представлении я явно указал FormMethod.Post.

Это мой банк.cshtml :

model MY_SYSTEM.Models.Employee.Registration
@{
    ViewBag.Title = "Bank";
    Layout = "~/Views/Shared/_LayoutPageh.cshtml";
}

@using (Html.BeginForm("Bank", "Employee", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @Html.AntiForgeryToken()
    <div class="main-content-inner">
        <div class="page-content">
            <div class="page-header">
                <h1>Employee Bank Detail</h1>
            </div>
            <div class="error">@ViewBag.ErrorMessage</div>
            <div class="row">
                <div class="col-xs-12">
                    <div>
                        <div class="user-profile row">
                            <div class="col-sm-offset-1 col-sm-8">
                                <form class="form-horizontal">
                                    <div class="tabbable">
                                        <div class="tab-content profile-edit-tab-content">
                                            <div id="edit" class="tab-pane in active">
                                                <div class="row">
                                                    <div class="col-xs-12 col-sm-8">
                                                        <div class="form-group">
                                                            <label class="col-sm-3 control-label no-padding-right" for="form-field-facebook">Bank</label>

                                                            <div class="col-sm-9">
                                                                <span class="input-icon">

                                                                    @*@Html.DropDownList("BankId", new SelectList(Model.Banks, "BankId", "BankName"),"-----Select Category-----")*@
                                                                    @Html.DropDownListFor(m => m.BankId, Model.Banks, "Please Select", htmlAttributes: new { @class = "form-control" })
                                                                    @Html.ValidationMessageFor(model => model.BankId, "", new { @class = "text-danger" })
                                                                    class="ace-icon fa fa-bank blue">
                                                                </span>
                                                            </div>
                                                        </div>
                                                        <div class="space-4"></div>
                                                        <div class="form-group">
                                                            <label class="col-sm-3 control-label no-padding-right" for="form-field-facebook">Branch</label>

                                                            <div class="col-sm-9">
                                                                <span class="input-icon">
                                                                    @*@Html.DropDownListFor(m => m.SortCodes, ViewBag.SortCodes as IEnumerable<SelectListItem>, new { @class = "form-control" })*@
                                                                    @Html.DropDownListFor(m => m.SortCode, Model.SortCodes, "", htmlAttributes: new { @class = "form-control" })
                                                                    @Html.ValidationMessageFor(model => model.SortCode, "", new { @class = "text-danger" })
                                                                    class="ace-icon fa fa-map-marker blue">
                                                                </span>
                                                            </div>
                                                        </div>
                                                        <div class="space-4"></div>
                                                        <div class="form-group">
                                                            <label class="col-sm-3 control-label no-padding-right" for="form-field-facebook">Account Name</label>

                                                            <div class="col-sm-9">
                                                                <span class="input-icon">
                                                                    @Html.EditorFor(model => model.AccountName, new { htmlAttributes = new { @class = "form-control", @placeholder = "" } })
                                                                    @Html.ValidationMessageFor(model => model.AccountName, "", new { @class = "text-danger" })
                                                                    class="ace-icon fa fa-user blue">
                                                                </span>
                                                            </div>
                                                        </div>
                                                        
                                                        <div class="space-4"></div>
                                                       
                                                            <div class="">
                                                                <button type="submit" class="btn btn-sm btn-success">
                                                                    Submit
                                                                    class="ace-icon fa fa-arrow-right icon-on-right bigger-110">
                                                                </button>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>

                                </form>
                            </div>
                        </div>
                    </div>
                </div>

            </div>
        </div>
    </div>

}


Мои методы ActionResult следующие:
//ПОЛУЧИТЬ
public ActionResult Bank ()
        {
            Models.Employee.Registration bank = new Models.Employee.Registration();
          
            bank.Banks = PopulateBank();
            bank.SortCodes = PopulateSortCode();       
            bank.AccountTypes = PopulateAccountType();

            return View(bank);
        }


//ПОСТ
[HttpPost]
        public ActionResult Bank(Models.Employee.Registration bank)
        {
            if (!ModelState.IsValid)
            {
                bank.Banks = PopulateBank();
                bank.SortCodes = PopulateSortCode();
                bank.AccountTypes = PopulateAccountType();
                return View(bank);
            }

            try
            {       ...   cmd.ExecuteNonQuery();
                }

                return RedirectToAction("Index");
            }
            catch (Exception)
            {
                bank.Banks = PopulateBank();
                bank.SortCodes = PopulateSortCode();
                bank.AccountTypes = PopulateAccountType();

                ViewBag.ErrorMessage = Helpers.Messages.GENERAL_ERROR;
                return View(bank);
            }
        }


Что я уже пробовал:

Когда я нажимаю кнопку Отправить, ошибка не возвращается, она просто перезагружается. В инструментах разработчика Chrome-Network я не вижу ничего толкаемого в данных. Трафик просто относится к JS, Css и т. д. Я также проверил консоль, и никакие значимые сообщения не возвращаются, кроме следующих (которые кажутся не очень значимыми, если только я не упускаю их значение) :
Неперехваченная ошибка: недопустимые размеры для участка, ширина = null, высота = null
в B.размер (в jQuery.флот.мин.ДШ:8)
в новом b (jquery.flot.min.js:7)
при т (на jQuery.флот.мин.ДШ:7)
в новом c (jquery.flot.min.js:8)
в функции.а.участок (на jQuery.флот.мин.ДШ:8)
на drawPieChart (mihr20:615)
в HTMLDocument.<anonymous> (mihr20:643)
в J (библиотека jQuery-2.1.4.мин.ДШ:2)
at Object.fireWith [as resolveWith] (jquery-2.1.4.min.js:2)
в функции.готов (библиотека jQuery-2.1.4.мин.ДШ:2)

1 Ответов

Рейтинг:
8

Richard Deeming

Цитата:
@using (Html.BeginForm("Bank", "Employee", FormMethod.Post, new { @class = "form-horizontal" }))
{
    ...
    <form class="form-horizontal">
        ...
    </form>
    ...
}
Вложенные формы не поддерживаются в HTML. Попробуйте удалить это лишнее <form> тег, или изменение его на <div>


Tshumore

Я удалился . Форма пытается выполнить обратную передачу, но все равно перезагружается обратно с заполненными значениями формы. В таблице базы данных он все еще ничего не фиксирует

Richard Deeming

Тогда это либо провал проверки, либо попадание в точку. catch блок.

Попробуйте добавить в форму сводку проверки - @Html.ValidationSummary().

Если он все еще не работает, установите точку останова в начале вашего проекта. [HttpPost] метод и шаг через него, чтобы увидеть, где проблема.

F-ES Sitecore

Шаг через код в отладчике. Получает ли ваше почтовое действие удар? Являются ли значения модели тем, что вы ожидаете? допустимо ли состояние модели? Заполняется ли "cmd" так, как вы ожидаете? Помните, что мы не знаем, каковы ваши входные данные, мы не можем получить доступ к вашей базе данных, мы не можем удаленно отлаживать для вас, вам нужно отлаживать себя, чтобы по крайней мере выяснить, в какой момент процесса он терпит неудачу, и оттуда вы можете спросить о решениях.

Tshumore

хорошо спасибо