爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交
今天做项目的时候发现了个问题,是关于RenderAction和RenderPartial的,它们在MVC2的时候就出现了,不是MVC3的新东西,那为什么要拿出来说呢,其主要原因在于,我对它们的了解在MVC3时代有了更上一层的认识,呵呵。
先说一下他们的作用:
RenderAction:渲染分部视图到页面上,他要求你提供一下Action的名称和Controller的名称
RenderPartial:渲染分部视图到页面上,他要求你提代一个分部视图的名称,即它的路径,如果是当然Controller下或者Shared下的页面,直接写它的名称即可
再说一下他们的区别:
RenderAction:它是走controller下的action方法的,即走[HttpGet]特性的方法(默认下就是HttpGet)
RenderPartial:他不走controller下的action方法,即使你有这个方法,他也不会走,但一般使用RenderPartial时,都是把数据写在页面上的,它的action方法完全多余。
下面是一个表单提交的实现,它是使用分部视图完成的表单模块,它有两个action,以便去实现GET请求和POST请求,看代码:
1 /// <summary> 2 /// 用户登陆 3 /// </summary> 4 /// <returns></returns> 5 public ActionResult UserLogOn() 6 { 7 return View(new UserLogOnModel()); 8 } 9 [HttpPost] 10 public ActionResult UserLogOn(UserLogOnModel entity) 11 { 12 if (ModelState.IsValid) 13 { 14 VM = user_InfoManager.UserLogOn(new User_Info { Email = entity.Email, Password = entity.Password }); 15 if (VM.IsComplete) 16 { 17 return RedirectToAction("Index", "Home"); 18 } 19 else 20 { 21 VM.ToList().ForEach(i => ModelState.AddModelError("", i)); 22 } 23 } 24 25 return View(); 26 }
而在页面视图上,通过视图模型UserLogOnModel进行页面元素的填充及表单验证,在默认情况下,我们把模型赋了默认值(就是表单元素input上的value)
1 /// <summary> 2 /// 用户登陆 3 /// </summary> 4 public class UserLogOnModel 5 { 6 public UserLogOnModel() 7 { 8 this.Email = "登陆名"; 9 this.Password = "密码"; 10 } 11 [Required] 12 [DataType(DataType.EmailAddress)] 13 [Display(Name = "邮箱")] 14 public string Email { get; set; } 15 [Required] 16 [DataType(DataType.Password)] 17 [Display(Name = "密码")] 18 public string Password { get; set; } 19 }
当页面上触发POST事件后,就会到HTTPOST对应的action上,进行处理,ModelState是指视图模型的状态,如果验证不通过,它的IsValid属性为false,并且它会自动绑定到表单元素
上,这一样都是基于MVC的,前台代码可能是这样:
1 @model TsingDa.Ask.Models.UserLogOnModel 2 @{Layout = "";} 3 @using (Html.BeginForm("UserLogOn", "Home", FormMethod.Post, new { id = "LogOn" })) 4 { 5 @Html.ValidationSummary(true) 6 <div class="editor-field"> 7 @Html.TextBoxFor(m => m.Email) 8 @Html.ValidationMessageFor(m => m.Email) 9 </div> 10 <div class="editor-field"> 11 @Html.TextBoxFor(m => m.Password) 12 @Html.ValidationMessageFor(m => m.Password) 13 </div> 14 <input type="button" id="logOnBtn" value="登陆" /> 15 } 16 <script type="text/javascript"> 17 $("#logOnBtn").click(function () { 18 $.ajax({ 19 url: "/Home/UserLogOn", 20 data: $("#LogOn").serialize(), 21 type: "POST", 22 success: function (data) { 23 $("#LogOn").html(data); 24 } 25 }); 26 }); 27 </script>
注意,如果有多个视图中的表单分别有提交动作,必须使用AJAX方法,不能使用表单自己的SUBMIT方式,否则mvc会分不清你到底提交给谁,这也很正常。
OK,现在就算一个页面上有多个表单,我们使用RenderAction把业务分开处理,用AJAX提交方法分别进行POST提交就可以了。
爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交相关推荐
- asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)...
asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单 ...
- django一个html先后两个form,django 一个页面两个表单 怎么提交
收到一只叮咚 1234567891011121314151617181920212223242526272829办法1.同一个页面中建立两个表单 各自提交: 1234567812345678办法2:如 ...
- Asp.net中一个页面多个表单的解决方案
<form id="form1" runat="server"> <input name="TrueName" type= ...
- 爱上MVC3系列~分部视图中的POST
在PartialView中进行表单提交,有什么用呢,我来总结一下: 1 这个表单不只一个地方用到 2 可能涉及到异步的提交问题 这两种情况都有可能需要把表单建立在"分部视图"中,我 ...
- 爱上MVC3系列~同步与异步提交,在过滤器里如何进行重定向~续
回到目录 上一篇文章已经解决了同步与异步表单提交的页面重定向问题,而为什么要写个"续"呢,原因是,我觉得上次的代码不够美丽,而且有些啰嗦,也不符合我的代码之美原则,所以,我自己的代 ...
- 让一个网页打开的同时自动为另一个网页自动填写表单并提交
让一个网页打开的同时自动为另一个网页自动填写表单并提交 if you use "window.open" to open the window,you can ...
- 表单提交时submit验证非空return false没用_开发这样一个复杂的表单你需要用多久...
表单在中后台开发的时,是最多也是最另人头疼的,多级联动,繁杂的验证,动态解析等可算是苦不堪言.所以出现了无数的表单解决方案,像Uform, formily, NoForm等等一大堆用来解决中后台开发表 ...
- 使用php创建一个注册表单,如何实现一个简单的注册表单
创建一个注册表单是非常容易的 - 它事实上意味着,你只需要创建一个表单,表单将更新一些User的模型对象(这个例子是一个Doctrine实体)并保存它. 受欢迎的FOSUserBundle 提供了一个 ...
- PHP表单提交后页面跳转,PHP在表单提交后重定向到另一个页面
PHP在表单提交后重定向到另一个页面 我已经阅读了有关将 Headers 插入到php表单文件中的所有帖子,以便在提交表单后将用户重定向到另一个URL - 但我无法弄清楚如何执行此操作 . 以下是我的 ...
- html表单提交不判断,请问jquery有方法可以判断一个表单提交之后结果是成功或不成功吗?...
具体是这样的,今天在做项目的时候用到layer弹出插件,我弹出的是一个iframe层.我用了ajax提交,通过ajax提交后的回调判断提交是否成功,成功就调用parent.layer.close(in ...
最新文章
- 温控自动烘焙系统的研究与实现
- android窗口速度条,android 改变ViewPager切换页面时的速度
- 插入排序:表折半插入
- mybatis生成工具
- python情感分析模型_Python有趣|中文文本情感分析
- 利用Python中的GDAL和OGR模块实现shapefile对栅格DEM数据的裁剪
- 创建dataframe_Spark原理与实战(五) Spark核心数据抽象DataFrame
- python学习:包导入教程
- Win10编译OpenJDK源码
- CSAPP第五章家庭作业(原书第二版)
- 如果你看ARCore看的一脸懵的话,就来看看这个,带你入门
- R语言的graphics画图功能
- 怎么屏蔽还有照片_在朋友圈发男神照片没屏蔽父母,老妈的回应亮了
- 【理财入门一】三大资产与财务自由
- 用php进行联查,Thinkphp使用join联表查询的方法
- 使用python解压缩rar、zip文件
- 离散数学 2. 范式、推理
- 软件系统安全性测试列表(Checklist)
- 同城货运烽火再燃,B端市场成货运市场新赛点
- 高中学计算机都是学什么,计算机有哪些专业主要学什么