[ad_1]
J’ai un formulaire Razor MVC 5 qui envoie des données vers une base de données SQL. Lorsque je clique sur Soumettre, le formulaire se recharge et les valeurs du formulaire sont conservées. En vérifiant dans la base de données, je vois qu’aucune valeur n’est validée.
J’ai la version POST d’ActionResult déjà décorée avec [HttpPost]. De plus, dans la vue, j’ai explicitement spécifié FormMethod.Post.
Voici mon Bank.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">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" }) ^__i 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 ^__i 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> }
Mes méthodes ActionResult sont les suivantes :
//OBTENIR
public ActionResult Bank () { Models.Employee.Registration bank = new Models.Employee.Registration(); bank.Banks = PopulateBank(); bank.SortCodes = PopulateSortCode(); bank.AccountTypes = PopulateAccountType(); return View(bank); }
//POSTE
[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); } }
Ce que j’ai essayé :
Lorsque j’appuie sur Soumettre, aucune erreur n’est renvoyée, il se recharge simplement. Dans les outils de développement Chrome – Réseau, je ne vois rien dans les données. Le trafic concerne uniquement JS, Css etc. J’ai également vérifié la console et aucun message significatif n’est renvoyé à l’exception du suivant (qui ne semble pas vraiment significatif, à moins que sa signification ne me manque) :
Erreur non détectée : dimensions non valides pour le tracé, largeur = null, hauteur = null
à b.resize (jquery.flot.min.js:8)
au nouveau b (jquery.flot.min.js:7)
à t (jquery.flot.min.js:7)
au nouveau c (jquery.flot.min.js:8)
sur Function.a.plot (jquery.flot.min.js:8)
à drawPieChart (mihr20:615)
sur HTMLDocument.
en j (jquery-2.1.4.min.js:2)
à Objet.fireWith [as resolveWith] (jquery-2.1.4.min.js:2)
à Function.ready (jquery-2.1.4.min.js:2)
Solution 1
Citation:Le rasoir@using (Html.BeginForm("Bank", "Employee", FormMethod.Post, new { @class = "form-horizontal" })) { ... <form class="form-horizontal"> ... </form> ... }
Les formulaires imbriqués ne sont pas pris en charge en HTML. Essayez de supprimer ce supplément <form>
balise, ou en la remplaçant par une balise <div>
[ad_2]
コメント