Mvc form提交
在项目开发中,我们离不开表单提交,本篇主要记录mvc的Ajax.BeginForm提交方式。
- 需要用到的js
@Url.Script("~/Content/Scripts/jquery-1.7.1.js")
@Url.Script("~/Content/Scripts/jquery.validate.min.js")
@Url.Script("~/Content/Scripts/jquery.validate.unobtrusive.min.js")
@Url.Script("~/Content/Scripts/jquery.unobtrusive-ajax.min.js")
- 表单
@using (Ajax.BeginForm("EditUser", "UserCenter", new
AjaxOptions { Url = Url.Action("EditUser"), HttpMethod = "POST", OnSuccess = "ajaxForm" }, new { id = "editeForm" })){
@Html.AntiForgeryToken()
<table
border="0" cellspacing="0" cellpadding="0" width="100%"><tbody>
<tr>
<td
width="13%" align="right">@Html.LabelFor(model => model.nickname):
</td>
<td
width="87%">@Html.TextBoxFor(model => model.nickname, new { @class = "input1" })
@Html.ValidationMessageFor(model => model.nickname)
<span
class="red ml10">*</span><span
class="f12 cGray">必填</span></td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.email):
</td>
<td
id="td_email">@{
if (Model != null)
{
if (string.IsNullOrEmpty(Model.email))
{
<font
class="red">未绑定邮箱
</font>
<a
href="javascript:void(0)" onclick="triggerLi(3)"class="cBlue f12 ml10">
马上去绑定</a>}
else
if (Model.email_verified == 0){
@Html.Raw(Model.email)
<font
class="red">未验证</font>
<a
href="javascript:void(0)" onclick="triggerLi(3)"class="cBlue f12 ml10">马上去验证</a>
}
else
{
@Html.Raw(Model.email) <span>已绑定</span>
}
}
}
</td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.mobile):
</td>
<td
id="td_mobile">@{
if (Model != null)
{
if (string.IsNullOrEmpty(Model.mobile))
{
<font
class="red">未绑定手机
</font>
<a
href="javascript:void(0)" onclick="triggerLi(4)"class="cBlue f12 ml10">
马上去绑定</a>}else
if (Model.mobile_verified == 0){
@Html.Label(Model.mobile)
<font
class="red">未验证</font>
<a
href="javascript:void(0)" onclick="triggerLi(4)"class="cBlue f12 ml10">马上去验证</a>
}
else
{
@Model.mobile <span>已验证</span>
}
}
}
</td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.qq):
</td>
<td>
@Html.TextBoxFor(model => model.qq, new { @class = "input1" })
@Html.ValidationMessageFor(model => model.qq)
</td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.sex):
</td>
<td>
@{
Collection<CodeDescription> sex = ViewBag.Sex as
Collection<CodeDescription>;}@Html.RadioButtonListFor(model => model.sex, sex, System.Web.UI.WebControls.RepeatDirection.Horizontal)
@Html.ValidationMessageFor(model => model.sex)
</td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.birthday):
</td>
<td>
@Html.TextBoxFor(model => model.birthday, new { @class = "Wdate", onClick = "WdatePicker()" })
@Html.ValidationMessageFor(model => model.birthday)
</td>
<tr>
<td
align="right">@Html.LabelFor(model => model.province_id):
</td>
<td>
@Html.HiddenFor(model => model.province_id)
@Html.HiddenFor(model => model.city_id)
<span
id="span_province"></span><span
id="span_city" style="margin-left: 10px"></span>@*@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.Address)*@
</td>
</tr>
<tr>
<td
align="right">@Html.LabelFor(model => model.job):
</td>
<td>
@{
Collection<CodeDescription> Vocation = ViewBag.Vocation as
Collection<CodeDescription>;}@Html.RadioButtonListFor(model => model.job, Vocation, System.Web.UI.WebControls.RepeatDirection.Horizontal)
@Html.ValidationMessageFor(model => model.job)
</td>
</tr>
<tr
class="bg"><td
valign="top" align="right">@Html.LabelFor(model => model.trade_style):
</td>
<td>
@{
Collection<CodeDescription> InvestmentStyle = ViewBag.InvestmentStyle as
Collection<CodeDescription>;}@Html.RadioButtonListFor(model => model.trade_style, InvestmentStyle, System.Web.UI.WebControls.RepeatDirection.Horizontal)
@Html.ValidationMessageFor(model => model.trade_style)
</td>
</tr>
<tr
class="bg"><td
class="pb10" valign="top" align="right">@Html.LabelFor(model => model.trade_begin):
</td>
<td
class="pb10">@{
List<SelectListItem> dorpDownList = new
List<SelectListItem>();for (int year = 1990; year < DateTime.Now.Year; year++)
{
SelectListItem selectListItem = new
SelectListItem();if (Model != null && Model.trade_begin == year)
{
selectListItem.Selected = true;
}
selectListItem.Text = year.ToString();
selectListItem.Value = year.ToString();
dorpDownList.Add(selectListItem);
}
}
@Html.DropDownListFor(model => model.trade_begin, dorpDownList) 年
@Html.ValidationMessageFor(model => model.trade_begin)
</td>
</tr>
<tr>
<td
class="tc" colspan="2"><input
class="btn" value="提交修改"
type="submit" name=""></td>
</tr>
</tbody>
</table>
}
表单中的用户昵称采用
[Required(ErrorMessage = "请输入昵称")]
[Remote("UniqueNickCheck", "Account", ErrorMessage = "昵称已存在", HttpMethod = "post")]
[StringLength(8, MinimumLength = 2, ErrorMessage = "长度介于2-8位")]
[Display(Name = "昵称")]
public
string nickname { get; set; }
配置验证唯一性。
- 实体
public
class
UserInfo{
public
int ret { set; get; }public
string msg { set; get; }///
<summary>///
用户编号///
</summary>[ScaffoldColumn(false)]
public
string userid { set; get; }///
<summary>///
用户名///
</summary>[ScaffoldColumn(false)]
public
string username { set; get; }[Required(ErrorMessage = "请输入昵称")]
[Remote("UniqueNickCheck", "Account", ErrorMessage = "昵称已存在", HttpMethod = "post")]
[StringLength(8, MinimumLength = 2, ErrorMessage = "长度介于2-8位")]
[Display(Name = "昵称")]
public
string nickname { get; set; }///
<summary>///
头像地址///
</summary>[ScaffoldColumn(false)]
public
string userimg { get; set; }private
string _mobile = "";///
<summary>///
手机号///
</summary>[Display(Name = "手机")]
[RegularExpression(@"^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$", ErrorMessage = "手机号码格式错误")]
[Editable(false)]
public
string mobile{
get { return _mobile; }
set { _mobile = value; }
}
///
<summary>///
手机号是否已验证:未验证 1:已验证///
</summary>[ScaffoldColumn(false)]
public
int mobile_verified { get; set; }///
<summary>///
邮箱地址///
</summary>private
string _email = "";[Display(Name = "邮箱")]
[DataType(DataType.EmailAddress)]
[Editable(false)]
public
string email{
get { return _email; }
set { _email = value; }
}
///
<summary>///
邮箱是否已验证:未验证 1:已验证///
</summary>[ScaffoldColumn(false)]
public
int email_verified { get; set; }///
<summary>///
性别:未填 1:男 2:女///
</summary>[Display(Name = "性别")]
public
int sex { get; set; }///
<summary>///
出生年月///
</summary>[Display(Name = "生日")]
[RegularExpression(@"^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$", ErrorMessage = "日期格式为yyyy-MM-dd")]
public
string birthday { get; set; }[Display(Name = "QQ")]
[StringLength(20,MinimumLength=1,ErrorMessage="长度为1-20")]
[RegularExpression(@"^\d{1,20}$", ErrorMessage = "QQ号码为1-20位数字")]
public
string qq { get; set; }///
<summary>///
所在省/直辖市区号///
</summary>[Display(Name = "现居地址")]
public
string province_id { get; set; }///
<summary>///
所在城市区号///
</summary>public
string city_id { get; set; }///
<summary>///
职业///
</summary>[Display(Name = "职业")]
public
sbyte? job { get; set; }///
<summary>///
投资风格///
</summary>[Display(Name = "投资风格")]
public
sbyte? trade_style { get; set; }///
<summary>///
入市时间(年份)///
</summary>[Display(Name = "入市时间")]
public
int? trade_begin { get; set; }///
<summary>///
用户角色///
</summary>[ScaffoldColumn(false)]
public
sbyte? userrole { get; set; }///
<summary>///
用户开通的直播室编号///
</summary>[ScaffoldColumn(false)]
public
int? cast_room_id { get; set; }}
- 相关js
window.ajaxForm= function (data ) {
if (data.success) {
var infoqq=$.trim($("#@Html.NameFor(model => model.qq)").val());
if(infoqq=="")
$("#@Html.NameFor(model => model.qq)").val(qq);
art.dialog.tips(data.Message, showtime);
} else {
$(".error").remove();
if(typeof(data)=="string")
window.location.href = "@FormsAuthentication.LoginUrl";
else
if (data.returnUrl) window.location.href = data.returnUrl;else
if(data.controlID){var $err=$("<label generated=\"true\" class=\"error\"></label>");
$err.insertAfter($("#"+data.controlID)).html(data.Message);
}
else art.dialog.tips(data.Message, showtime);
}
}
数据验证js插件 validate使用格式
$("#fromVCode").validate({
rules: {
validatecode: {
required: true,
maxlength: 6
}
},
highlight: false,
errorPlacement: function(error, element) {
element.next().next("div").empty();
error.appendTo(element.next().next("div"));
},
success: function(label) {
label.remove();
},
submitHandler: function(form) {
var $err=$("<label generated=\"true\" class=\"error\"></label>");
$("#btnValidatecode").attr("disabled", "disabled");
if($("#confirmphone").val()=="")
{
$("#confirmphone").next().next("div").empty();
$err.appendTo($("#confirmphone").next().next("div")).html("请输入手机号!");
("#btnValidatecode").removeAttr("disabled");
return
false;
}
var par=$(form).serialize()+"&mobile="+$("#confirmphone").val();
$.post("@Url.Action("ValidateCode", "UserCenter")", par,
function(data) {
if (data.success) {
$(form)[0].reset();
$("#td_mobile").html($("#confirmphone").val()+"<span>已验证</span>");
art.dialog.tips(data.Message, showtime);
} else {
if(typeof(data)=="string")
window.location.href = "@FormsAuthentication.LoginUrl";
else
if (data.returnUrl) window.location.href = data.returnUrl;
else art.dialog.tips(data.Message, showtime);
}
$("#btnValidatecode").removeAttr("disabled");
});
return
false;
}
});
Mvc form提交的更多相关文章
- 【转】MVC form提交实体接收参数时空字符串值变成null
问题:entity.BZ的值是null,Request.Form["BZ"]的值是空字符串 目标:让entity.BZ的值是空字符串. 解决方法:在实体的BZ属性上加上 [Disp ...
- spring mvc form表单提交乱码
spring mvc form表单submit直接提交出现乱码.导致乱码一般是服务器端和页面之间编码不一致造成的.根据这一思路可以依次可以有以下方案. 1.jsp页面设置编码 <%@ page ...
- spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available
这两天在做spring3.0 MVC+hibernate3.2的练习中,做简单的form提交, 一直报java.lang.IllegalStateException: Neither BindingR ...
- asp.net MVC中form提交和控制器接受form提交过来的数据
1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的Request请求取值[HttpPost]public ActionResult AddNews(){ str ...
- 表单提交学习笔记(一)—利用jquery.form提交表单(后台.net MVC)
起因:一开始想用MVC本身的Form提交方法,但是提交完之后想进行一些提示,MVC就稍显不足了,最后用jquery插件---jquery.form.js,完美解决了问题~~ 使用方法 一.下载jque ...
- ASP.NET Core MVC – Form Tag Helpers
ASP.NET Core Tag Helpers系列目录 ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Helpers ...
- ASP.NET-AJAX.FORM提交附件失败
尝试了不少时间在AJAX.FORM提交附件,发现完全不行,经过下面的这个博客的介绍,使用ajax.form.js插件提交成功,记录一下该博文网址和结论: 相关网址:http://www.cnblogs ...
- 百度编辑神器ueditor在ajax或form提交内容时候异常
百度编辑神器ueditor在ajax或form提交内容时候异常,一:⑴web.config中<system.web> <httpRuntime requestValidationMo ...
- 关于button和form提交的一些问题
1.form 中type 为submit 和button的区别 submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理( ...
随机推荐
- 前端自学vs跟大神系统学?你看着办
前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...
- CSS网页制作常用标签
做了一个简单的网页,从布局到加内容,遇到了很多小问题.很多标签和属性都不会用或者忘记了.所以以此记录一下. 一.如何将边框四角变圆?(或做一个圆形) 顾名思义,如果要更改边框的角需要用到边框(bord ...
- 第一次使用UML的感觉
刚开始接触的时候,其实我内心是拒绝的,因为感觉这种软件之前接触过,觉得就是相当于思维导图那种的. 可当自己使用的时候,觉得大纲总体上是类似是规划方向的,可是细节却让人深思,用什么图标,特别是用什么线, ...
- EditView 输入限制(软键盘限制)
众所周知EditView有个inputType 属性可以设置输入的类型. 如下设置,则只能输入数字: android:inputType="number" 但是有时候需要自定义输入 ...
- 那些年,坑死自己的事之fread/fwrite
今天继续看牛人做过的东西,这个小程序并不大,加上相当多的注释行,才5000多行.这个小程序是在linux下实现的,之前自己也一直用vi来看并加以更加详细的注释,但是效率实在太低.于是将其转移到wind ...
- Hadoop单机模式安装-(2)安装Ubuntu虚拟机
网络上关于如何单机模式安装Hadoop的文章很多,按照其步骤走下来多数都失败,按照其操作弯路走过了不少但终究还是把问题都解决了,所以顺便自己详细记录下完整的安装过程. 此篇主要介绍在虚拟机设置完毕后, ...
- ECMAScript 5
2009年12月,ECMAScript 5.02011年6月,ECMAscript 5.1版发布2015年6月,ECMAScript 6正式通过,成为国际标准ES6第一个版本 ES2015,发布于20 ...
- 【leetcode】Median of Two Sorted Arrays
题目简述: There are two sorted arrays A and B of size m and n respectively. Find the median of the two s ...
- apache的AB测试
A/B测试A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信 ...
- Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...