asp.net-mvc – Bootstrap模式表单在提交后不会关闭
|
我需要做的是显示一个弹出窗口向我的数据库添加一条新记录,即时通讯使用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> 如果事情可能会更好,请告诉我. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – %中的含义是什么:和%=有什么区别?
- asp.net – 如何为客户端和服务器缓存设置不同的缓存到期时
- asp.net-mvc – 在ASP.NET MVC中为URL段添加ID和标题
- asp.net-mvc – 测试控制器使用User.Identity.Name的操作
- asp.net-mvc-3 – Telerik MVC网格,在运行时从集合或字典中
- 将TagHelpers嵌套在ASP.NET Core MVC 6中
- 在ASP.NET 5中获取AuthenticationProperties
- ASP.net应用程序的最佳perfmon计数器是什么?
- asp.net-mvc – 我们可以从现有数据库的选定表中Scaffold D
- asp.net-mvc – 可以在ASP.NET MVC中停止表单的多个回发的方
- .net – 何时设置HttpContext.User.Identity?
- asp.net-mvc – 根据浏览器接受语言自动设置uiCu
- asp.net-mvc – SSL握手问题? (当时:网页挂起,
- ASP.NET MVC – 如何从局部视图中获取当前操作?
- asp.net-mvc – razor要求;在做什么时使用(Html.
- asp.net-mvc-3 – MVC绑定到带有列表属性的模型忽
- asp.net-mvc – MVC中的模型含义
- asp.net-mvc – 将默认日期格式应用于ASP.NET MV
- asp.net – 在.NET Core 1.0 MVC中的视图中使用授
- 在ASP.NET Identity中添加角色
