asp.net-mvc – Bootstrap模式表单在提交后不会关闭
发布时间:2020-12-16 00:15:23 所属栏目:asp.Net 来源:网络整理
导读:我需要做的是显示一个弹出窗口向我的数据库添加一条新记录,即时通讯使用bootstrap 3我很喜欢它,因为我没有使用单行jquery,而且我有非常好的形式(obvioulsy他们基于jquery ). 我通过ajax验证我的表单,但现在的问题是我的模态永远不会关闭,当我尝试重定向到一
我需要做的是显示一个弹出窗口向我的数据库添加一条新记录,即时通讯使用bootstrap 3我很喜欢它,因为我没有使用单行jquery,而且我有非常好的形式(obvioulsy他们基于jquery ).
我通过ajax验证我的表单,但现在的问题是我的模态永远不会关闭,当我尝试重定向到一个Action时,动作被加载到我的模态中,所以我的问题是如何停止我的模态? 这是此代码的作用示例: 我的表格: 验证时的表格: 这是完美的代码: <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">Add Car</h4> </div> <div class="modal-body"> @using (Ajax.BeginForm("ModalAdd",new AjaxOptions() {UpdateTargetId = "mymodalform"})) { <div id="mymodalform"> @Html.Partial("CreatePartialView",new Car()) </div> } </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> 而我的部分: @model ControliBootstrap.Models.Car <div class="form-horizontal" > @Html.ValidationSummary(true) <div class="form-group"> @Html.LabelFor(model => model.Model,new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Model) @Html.ValidationMessageFor(model => model.Model) </div> </div> <!--More fields--> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default"/> </div> </div> </div> 现在的问题是,当模型在我的控制器中有效时,我会转到在我的模态中加载的索引动作,所以我的问题又是如何关闭我的模态? 这是我的控制器: public ActionResult ModalAdd(Car car) { if (ModelState.IsValid) { db.Cars.Add(car); db.SaveChanges(); return RedirectToAction("Index"); } return PartialView("CreatePartialView",car); } 解决方法
只是为了记录,我发现我的答案希望它能帮助别人,很难找到完整的文章.
我不得不使用更多的jquery,但这是一个干净的答案(我认为). 在我的模型中使用数据注释: [Required] public string Name { get; set; } [Required] public string Phone { get; set; } 然后我在包含我的模态表单的共享文件夹中创建了一个部分,因此我可以将其设置为全局. @model Controli.Models.Provider <!-- Modal --> <div class="modal fade" id="mdlnewprovider" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> @using (Html.BeginForm("Add","Providers",FormMethod.Post,new { id = "frmnewprovider" })) { <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">Nuevo Proveedor</h4> </div> <div class="modal-body"> <div class="form-group"> @Html.TextBoxFor(u => u.Name,new { @class = "form-control",@placeholder = HttpUtility.HtmlDecode(@Html.DisplayNameFor(u => u.Name).ToHtmlString()) }) @Html.ValidationMessageFor(u => u.Name) </div> <!--More Textboxes and Validaton Messages--> </div> <div class="modal-footer"> <input type="submit" value="Agregar" class="btn btn-primary" /> </div> } </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> 和剧本: var frmnewprovider = $("#forms-providers-new"); $(document).ready(function () { frmnewprovider.submit(function (e) { e.preventDefault(); frmnewprovider.validate(); if (frmnewprovider.valid()) { $.ajax({ url: "/Providers/Add",type: "POST",contentType: "application/json; charset=utf-8",data: JSON.stringify({ Name: frmnewprovider.find('#Name').val(),Phone: frmnewprovider.find('#Phone').val(),Email: frmnewprovider.find('#Email').val(),Country: frmnewprovider.find('#Country').val(),State: frmnewprovider.find('#State').val(),Address: frmnewprovider.find('#Address').val() }),success: function (result) { //if record was added to db,then... window.location.replace('/Providers/Index'); //we can redirect //or simply close our modal. //$('#mdlnewprovider').modal('hide'); },error: function(result) { alert('error'); } }); } }); }); 现在我需要做的就是在我需要的地方渲染我的表单是添加这些行: <button class="btn btn-primary" data-toggle="modal" data-target="#mdlnewprovider"> Nuevo </button> @Html.Partial("Modals/Providers/FrmNew",new Provider()) @section scripts { <script src="~/Scripts/Modals/Providers/NewProvider.js"></script> <!--Where this script is the one above--> } 最后因为我的模型是客户端验证的我只是将我的模型添加到我的数据库,并重定向到索引视图,而ajax调用隐藏活动模式更新:我建议在ajax调用时决定是重定向还是隐藏模态.喜欢评论. public ActionResult Add(Provider provider) { if (ModelState.IsValid) //Validate in server side too! { db.Providers.Add(provider); db.SaveChanges(); return Json(new{ success = true}); //return a dummy json,you can pass what //ever parameter you need. if code reach //this point. it will always hit success //in our ajax call } } 确保您的web.config包含: <appSettings> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> 我也使用这些脚本: <script src="~/Scripts/jquery.validate.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.js"></script> 如果事情可能会更好,请告诉我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET MVC 3:当BeginForm在布局上时生
- asp.net-mvc – 存在多个获取操作时的MVC API路由
- asp.net-mvc – 如何在ASP.NET MVC中使用querystring路由UR
- asp.net-mvc – 用于ASP.NET MVC 3的NuGet软件包
- ASP.NET 性能优化之反向代理缓存使用介绍
- SqlServer如何给表添加新的字段以及字段注释
- ASP.NET MVC技能体系图
- asp.net-mvc – 如何根据接受的HTTP动词重载ASP.NET MVC操作
- asp.net-mvc-3 – 如何在MVC3中键入时过滤占用
- asp.net-mvc – ASP.NET MVC Remote属性方法参数始终传递nu
推荐文章
站长推荐
- asp.net-mvc – 如何在我的视图中将HTML从MVC控制
- asp.net – 禁止在IIS 7.5或.NET中的某些文件上查
- asp.net – 如何在运行时设置ObjectDataSource选
- asp.net – 通过ajax将jquery中的数组传递给c#we
- asp.net-mvc – ASP.NET MVC4 CustomErrors Defa
- App_GlobalResources(ASP.NET)中的子文件夹
- asp.net 共享文件夹 网络文件夹 文件读写
- asp.net-mvc – 在Azure中启用自定义错误
- asp.net-mvc – MVC“添加控制器”是“无法检索元
- asp.net – Devexpress网格延迟加载
热点阅读