使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了,而且有模型在使用模型验证更方便点。怎么解决呢?

当然你可以专门写一个针对此的jquery插件,我觉得蛮麻烦的,喜欢写插件的研究下吧。

首先Nuget获取一个 MVC EditorTemplates for Bootstrap 3 的组件,有了他以后就有了一些模版,比如比较简单的一个Text:

@model object

<div class="form-group@(Html.ValidationErrorFor(m => m, " has-error"))">

@Html.LabelFor(m => m, new { @class = "control-label" })

<div class="controls">

@Html.TextBox(

"",

ViewData.TemplateInfo.FormattedModelValue,

ViewBag.ClearTextField == true ? new { @class = "form-control clear-text-field input-block-level" } : new { @class = "form-control input-block-level" } )

@Html.ValidationMessageFor(m => m, null, new { @class = "help-block" })

</div>

</div>

这样子以后在使用EditorFor后就会直接输出bootstrap需要的html,比较方便。

我们看到里面已经有了验证失败的has-error的处理,第二个问题来了,我们需要前端验证,ajax验证也行啊,还有自定义验证呢?

于是乎继续利用MVC自带的模型验证,刚才获取的组件中有个Validation类,我们先在里面添加一个扩展方法用于非强类型

public static MvcHtmlString ValidationError(this HtmlHelper htmlHelper, string field, string error)

{

if (HasError(htmlHelper, ModelMetadata.FromStringExpression(field, htmlHelper.ViewData), field))

return new MvcHtmlString(error);

else

return null;

}

View中即可添加:

<div class="form-group@(Html.ValidationError("Department", " has-error"))">

<label class="control-label" for="DepartmentId">所在部门</label>

<div class="controls">

<span id="deptname"> </span><a id="btnSelectDepartment">选择部门</a>

<input class="form-control" data-val="true" data-val-required="部门是必需的。" id="DepartmentId" name="DepartmentId" type="hidden" value="">

@Html.ValidationMessage("Department", null, new { @class = "help-block" })

</div>

</div>

最后在脚本中处理ajax提交和回发的处理,不知道用MVC的Ajax.BeginForm能不能更方便点,不过个人觉得这东西不是很灵活,所以继续用ajaxSubmit及jquery.ajax:

//ready

var $divuserform = $("#divuserform");

$divuserform.dialog({

title: '新建用户',//.....

});

$("#btnCreateUser").click(function () {

var nodes = zTreeObjleft.getSelectedNodes();

if (nodes.length > 0) {

CreateUserForm($divuserform);

}

})

function CreateUserForm(form) {

var $divuserform = form;

$.ajax({

url: "CreateUser",

success: function (html) {

CreateUserFormSuccessCallback(html, $divuserform);

}

});

}

function InitSelectDepartmentWhenCreateUser() {

$("#btnSelectDepartment").departmentSelection({

onSelected: function (name, id) {

$("#deptname").text(name);

$("#DepartmentId").val(id);

}

});

}

function CreateUserFormSuccessCallback(html, form) {

var $divuserform = form;

$divuserform.children().children().html(html);

$("#divuserform").dialog("open");

var $form = $divuserform.find("form")

InitSelectDepartmentWhenCreateUser();

$form.submit(function () {

$form.ajaxSubmit(function (data) {

if (data == "success") {

$("#divuserform").dialog("close");

$("#divuserform").clearForm();

}

else {

CreateUserFormSuccessCallback(data, form);

}

});

event.preventDefault();

});

}

后台Action方法中我们便可为其补充自定义验证:

if (!DepartmentId.HasValue)

{

ModelState.AddModelError("Department", "必须选择部门");

}

if (ModelState.IsValid)

{

user.Id = Guid.NewGuid();

user.CreateTime = DateTime.Now;

if (DepartmentId.HasValue)

{

var dept = new DeptUserRole();

dept.DepartmentId = DepartmentId.Value;

dept.IsMain = true;

dept.RoleId = RoleId.Value;

user.DeptUserRoles.Add(dept);

}

db.Users.Add(user);

await db.SaveChangesAsync();

return Content("success");

}

return View(user);

大致效果:

转:MVC遇上bootstrap后的ajax表单验证的更多相关文章

  1. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  2. jquery php ajax 表单验证

    本实例用到 JQuery 类库本身的函数和功能,所有表单信息利用 PHPMailer 类库邮件的形式发送.   .创建一个表单 html 页面   表单部分 html 代码   以下为引用内容: &l ...

  3. 基于Bootstrap+jQuery.validate Form表单验证实践

    基于Bootstrap jQuery.validate Form表单验证实践 项目结构 :     github 上源码地址:https://github.com/starzou/front-end- ...

  4. Spring MVC 文件上传、Restful、表单校验框架

    目录 文件上传 Restful Restful 简介 Rest 行为常用约定方式 Restful开发入门 表单校验框架 表单校验框架介绍 快速入门 多规则校验 嵌套校验 分组校验 综合案例 实用校验范 ...

  5. validate+jquery+ajax表单验证

    1.案例 1.1 Html form表单内容 <form class="cForm" id="cForm" method="post" ...

  6. Ajax 表单验证 实现代码

    兼容: opera 9.6 + chrome 2.0 + FF 3 + IE 6 效果:一边输入一边实现验证 image 环境:ruby 1.8.6 + rails 2.1.0 + windows 核 ...

  7. ajax+表单验证+验证码生成例子

    MainController.class.php <?php namespace AjaxYz\Controller; use Think\Controller; class MainContr ...

  8. jQuery Validatede 结合Ajax 表单验证提交

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. boostrap ajax表单验证提交

    =============================================================================== 1. 1 <link href=& ...

随机推荐

  1. [转]Tomcat和Apache的区别和联系

    Apache,指的是Apache软件基金会下的一个项目——Apache HTTP Server Project:Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器.通用的T ...

  2. centos7.2 安装 Elasticsearch5.2

    打算上全文检索,就找到了找个产品,开始研究下…… 1.官网地址: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/install ...

  3. mui时间选择器选择今天以后的时间

    <script type="text/javascript"> (function($) { $.init(); // var result = $('#result' ...

  4. css3 图片 悬停效果

    纯css实现 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  5. css背景图片拉伸

    css背景图片拉伸 background-image:url(bg.png); -moz-background-size: 100% 100%; -o-background-size: 100% 10 ...

  6. .NET开发笔记--对config文件的操作(1)

    1先写一些常用的公共类: 在Web.config文件中的配置: <!-- appSettings网站信息配置--> <appSettings> <add key=&quo ...

  7. 嵌入式驱动开发之spi---spi串口通信调试

    一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是:          * SPICLK     : 用于传输数据的同 ...

  8. 《C++程序设计》朝花夕拾

      (以后再也不用破Markdown写东西了,直到它有一个统一的标准,不然太乱了--) 函数签名 int f (int a, int b) ↑ ↑ ↑ ↑ 返回类型 函数名 形 式 参 数 其中,函数 ...

  9. Jmeter JDBC执行多条SQL

    今天在编写自动化回归脚本的时候,需要在jmeter的jdbc请求中执行多条sql,在百度里搜索了一些文章,按照网上提供的步骤,发现不起作用,后来发现是作者的截图误导了,为了让后面的同学少走弯路,这里我 ...

  10. centos 6.5 安装图形界面【转】

    最近想在centos 6.5上安装图形界面,在网上找到了方法.[原文链接] CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包 ...