ASP.NET MVC提交表单的几种方式(验证+提交+后台接收)

原生提交方式

也就是在form标签上添加action属性

验证

  • 验证非空直接在input标签上添加required属性(h5),这个属性必须和type="submit"的按钮搭配起来用,如果button的type不是submit,那这个required是没有意义的。
  • 验证其他(使用正则表达式或者长度限制时)使用onsubmit属性。onsubmit返回false不提交表单,返回true表示提交表单。

原生提交方式的验证有两种

在form标签下添加onsubmit="return functionName()

   <form id="teamForm" action="getTeam" onsubmit="return demo()"><div class="form-group row"><label class="col-md-2" for="customer">label><div class="col-md-10"><input name="customer" type="text" class="form-control" id="customer" placeholder="请输入客户名称" required>div>div><div class="form-group row"><label class="col-md-2" for="description">产品描述label><div class="col-md-10"><input name="description" type="text" class="form-control" id="description" placeholder="请输入产品描述" required>div>div><button type="submit" class="btn btn-primary">开单button>form><script>function demo() {//写验证}script>

在js里为form绑定submit事件

    $("#teamForm").bind("submit", function () {//写验证})

验证失败后的提醒

因为很多时候用的都是alert,但其实它的用户体验不是很好,每次都需要点击,所以不建议使用
h5的required属性(表示必填项),此验证几秒之后自动消失,required 属性适用于以下 类型:text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file。上面提过的required只能与type='submit'button一起使用

在这里插入图片描述
如果想要修改默认提示信息,在input里添加oninvalid="setCustomValidity('请填写客户名称');" oninput="setCustomValidity('')"

   <input name="customer" type="text" class="form-control" id="customer" placeholder="请输入客户名称" required oninvalid="setCustomValidity('请填写客户名称');" oninput="setCustomValidity('');">

在这里插入图片描述

限制输入字符数(有依赖bootstrap)

oninput这个事件是实时监听用户输入,它的使用可以大大提高效率。
在这里插入图片描述

    $(function () {checkLen("#customer", 10);//限定输入10字符checkLen("#description", 10);//10个字符})function checkLen(element, length) {$(element).on("input propertychange", function (event) {var len = $.trim($(element).val()).length;if (len > length) {$(element).val($.trim($(element).val()).substring(0, length));showPopover($(element), "限定输入" + length + "个字");return;}})}function showPopover(target, msg) {target.attr("data-original-title", msg);$('[data-toggle="tooltip"]').tooltip();target.tooltip('show');target.focus();//2秒后消失提示框var id = setTimeout(function () {target.attr("data-original-title", "");target.tooltip('hide');}, 2000);}

正则表达式限制只能输入数字

value = value.replace(/[^\d]/g, '');

表示不符合括号内正则表达式的替换为空格,g表示全局查找,将value里不是数字的字符全部替换为空格。
在这里插入图片描述
在上面的oninput事件后面添加

    var reg = /^\d$/g;if (!reg.test($.trim($(element).val()))) {var value = $.trim($(element).val());value = value.replace(/[^\d]/g, '');$(element).val(value);showPopover($(element), "只能输入数字");}

后台获取

取决于method
get方式提交,url参数以name组成键值对,拼接在url(http://www.example.com/example/program?x=28&y=66
)后面,获取时使用Request.QueryString["name"]
post方式提交表单,因为get方式不安全,所以大部分时候用post的情况较多。
后台接收使用 Request.Form["name"]
post方式提交不要忘记HttpPost的头,表示这是个post请求

  [HttpPost]public ActionResult getTeam(){var customer = Request.Form["customer"];var pwd = Request.Form["description"];}

ajaxSubmit提交

需要下载jquery的form插件,下面贴了宝藏地址
插件下载地址

            $("#teamForm").ajaxSubmit({url: "Home/getTeam",type: "post",dataType: "json",data:{"id":"3"},//在getTeam方法里定义参数获取beforeSubmit: function () {//返回false的话表单不会提交 可用于表单验证和处理提交前的数据console.log("before");},success: function (responseText, statusText, xhr, $form) {console.log(eval(responseText));if (eval(responseText)) {alert("开单成功");} else {alert("开单失败");}},error: function (xhr, status, err) {alert("error");},clearForm: true,    // 成功提交后,清除表单填写内容resetForm: true    // 成功提交后,重置表单填写内容})
        [HttpPost]public JsonResult getTeam(string id){var customer = Request.Form["customer"];var pwd = Request.Form["description"];var paraid = id;return Json(true);}

这么看来ajaxSubmit比原生提交更方便一些,毕竟还有回调处理。
如有错误,烦请指正。
表单内容还有上传文件,在下一篇中列出。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部