ASP.NET MVC 表单提交教程
在前面的两篇文章总,我们分别做了一个简单的ASP.NET MVC的例子和进行数据的绑定,在本文中,将通过ASP.NET MVC Framework实现表单的提交,你可以看到,在这里有多种方法来获取表单数据,可以自动映射、通过Request对象获取等。
实现新增数据
1.这里我们还采用上一篇做过的Blog示例(在后面的文章中,我将一直使用该示例),在这之前,先修改一下上次示例中的BlogRepository,为其增加一个Add方法:
public void Add(Post post) {BlogDataContext db = new BlogDataContext();db.Posts.InsertOnSubmit(post);db.SubmitChanges(); }
2.在Index视图中添加一个可以转向新建Post页面的链接,使用ActionLink()方法:
<h2>ASP.NET MVC Framework Sample</h2> <hr /> <%=Html.ActionLink("Home", new { action="Index"})%> | <%=Html.ActionLink("New Post", new { action="New"})%>
<div> <%foreach (Post post in ViewData){ %> <div class="postitem"> <strong>Title</strong>:<%=Html.Encode(post.Title) %></br> <strong>Author</strong>:<%=Html.Encode(post.Author) %></br> <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br> <strong>Content</strong>:<%=Html.Encode(post.Description) %></br> </div><br /> <% } %> </div>
在上面的代码中,第四行我们添加了New Post超链接,并指定该链接的action为New,这里我们也可以通过action名称来指定:
<h2>ASP.NET MVC Framework Sample</h2> <hr /> <%=Html.ActionLink("Home", "Index")%> | <%=Html.ActionLink("New Post", "New")%> <div> <%foreach (Post post in ViewData){ %> <div class="postitem"> <strong>Title</strong>:<%=Html.Encode(post.Title) %></br> <strong>Author</strong>:<%=Html.Encode(post.Author) %></br> <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br> <strong>Content</strong>:<%=Html.Encode(post.Description) %></br> </div><br /> <% } %> </div>
3.编写控制器中的New action代码,这里代码非常简单,因为我们只需要转向新建Post视图就可以了,并不需要其他的操作:
[ControllerAction] public void New() { //转向新页面 RenderView("New"); }
4.编写New视图,在这里我们将提供一些表单,供用户输入数据,编写HTML代码如下:
<h2>New Post</h2> <hr /> <div class="postitem"> Title:<input id="title" name="title" type="text" /><br /><br /> Author:<input id="author" name="author" type="text" /><br /><br /> Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br /> <input type="submit" value="Save" /> </div>
接下来添加一个HTML的form元素,并指定它的action为我们要增加新的Post的action,这里假定为Add,并且指定method为Post,最终我们完成的代码应该看起来如下所示:
<h2>New Post</h2> <hr /> <div class="postitem"> <form action="Add" method="post"> Title:<input id="title" name="title" type="text" /><br /><br /> Author:<input id="author" name="author" type="text" /><br /><br /> Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br /> <input type="submit" value="Save" /> </form> </div>
获取表单数据
完成了上面的步骤之后,就可以编写控制器中Add action的代码,在这里需要获取表单的数据,并将其写入到数据库,ASP.NET MVC Framework中提供了多种方法获取表单数据。
1.自动映射
使用这种方法,我们只需要把方法的参数定义表单的名称,ASP.NET MVC Framework将会自动帮助我们进行映射,直接把表单的数据赋值给form的Action所对应的方法参数上,如下代码所示:
[ControllerAction] public void Add(string title, string author, string description) {Post post = new Post();post.Title = title;post.Author = author;post.Description = description;post.PubDate = DateTime.Now;BlogRepository repository = new BlogRepository();repository.Add(post);RedirectToAction("Index"); }
2.第一种方法在使用时,如果界面上表单过多,会使方法的参数变大,这样好像就变成了重构中所说的“脏代码”,为了解决这个问题,我们还可以使用窗体变量来获取表单的值,使其代码看起来如下所示:
[ControllerAction] public void Add() {Post post = new Post();post.Title = Request.Form["title"];post.Author = Request.Form["author"];post.Description = Request.Form["description"];post.PubDate = DateTime.Now;BlogRepository repository = new BlogRepository();repository.Add(post);RedirectToAction("Index"); }
上面这两种方法都是获取表单的值,并将其保存到数据库中,转向Index action进行处理。
3. 在MVCToolkit中还提供了一些扩展的方法,可以用来获取表单的值,后面的文章再说。
配置路径选择
这一步什么时候都不能忘,这次我们修改一下,变为controller/action的形式,代码如下:
void Application_Start(object sender, EventArgs e) {// Code that runs on application startup RouteTable.Routes.Add(new Route {Url = "[controller]/[action]",Defaults = new { action = "Index" },RouteHandler = typeof(MvcRouteHandler)}); }
完成数据增加
上面的示例运行后如下所示,首先是Index视图中有一个New Post链接:
点击New Post后:
提交之后,增加一条新的Post,并转向Index视图:
结束语
关于在ASP.NET MVC Framework中实现表单的提交简单示例到这里就结束,相信通过前面三篇简单的文章,大家对ASP.NET MVC Framework已经有了一个大概的认识,后面我会写一些深入一点的文章以及MVCToolkti提供的一些HTML Helper方法:)
ASP.NET MVC 表单提交教程相关推荐
- Asp.Net Mvc表单提交之List集合
一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...
- asp.net Ajax表单提交 二种方式数据处理 asp.net
第一种格式 var form = $("#form1"); var data = form.serializeObject(); {"Id":"0&q ...
- Spring MVC表单教程
本教程将展示如何在Spring MVC中处理表单提交. 我们将定义一个控制器来处理页面加载和表单提交. 您可以在GitHub上获取代码. 先决条件: 您应该有一个运行中的Spring MVC应用程序. ...
- Spring MVC JSP 表单标签教程
在本教程中,我们将通过一个示例讨论所有与Spring MVC相关的JSP表单标签. 在本教程中,我们将使用下面重要的弹簧MVC表单标签进行讨论: 表单标签 文本字段标签 选择标签 复选框 无线电盒 密 ...
- php 表单提交及验证 tp,ThinkPHP表单自动提交验证实例教程
ThinkPHP表单自动提交验证实例教程 附加规则 配合验证规则使用,包括: function 使用函数验证,前面定义的验证规则是一个函数名 callback 使用方法验证,前面定义的验证规则是一个当 ...
- asp.net表单提交方法:GET\POST介绍
表单form的提交有两种方式,一种是get的方法,一种是post 的方法,如果没有特殊指定,默认为post.看下面代码,理解ASP.NET Get和Post两种提交的区别: 1.< form i ...
- Spring MVC表单防重复提交
转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retent ...
- 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...
<PHP教程:使用YII2框架实现微信公众号中表单提交功能>要点: 本文介绍了PHP教程:使用YII2框架实现微信公众号中表单提交功能,希望对您有用.如果有疑问,可以联系我们. 相关主题: ...
- 简单表单提交php教程,php教程之表单提交实例
一个超简单的初学者用的php教程之表单提交实例有需要的朋友参考一下. 下面我们将创建一个复杂的表单,代码如下所示. 实例代码如下: 姓名: 密码: 年龄: 16">小于16 16-30 ...
最新文章
- java string 连续字符_Java中字符串中连续相同字符去重方法
- java怎么使用log函数_在使用couenne求解器的spyder中使用logof函数
- HTTP.sys 远程执行代码验证工具
- python中是干嘛的-你都用Python来做什么,它对你来说有什么作用?
- python各个解释器的用途-常用的五种Python解释器|老男孩网络Python学习课程
- Linux内核功能及架构
- 识别Java中的代码气味
- 信息学奥赛一本通 2068:【例2.6】鸡兔同笼
- dj鲜生-06-其它模块以应用方式生成并归位
- 易到用车:服务器遭到连续攻击 被索要巨额比特币
- [MATLAB]MATLAB中SIMULINK常用命令表
- 吾在这里给大家拜年啦!
- FileZilla Server源码分析--大漠落日5节
- 网联最终落地,如何影响第三方支付机构、银联等?
- 汇正财经推荐股票靠谱吗?说说自己的经历
- 新一年级家长快查收,小学入学必备物品超强清单!
- 2021年中国玉米淀粉市场供需及价格分析,购销转淡,跌势趋稳,价格仍处高位「图」
- WPS自定义样式功能太弱了
- 1994-2019:中国互联网流量争夺史
- 漏洞poc和漏洞利用_带HTML的PowershellHTML空白空间隐写术和二进制漏洞利用交付[PoC]
热门文章
- vb 6.0服务器组件选哪个,VB 6.0包括几种版本?分别是什么?
- mysql建立pdm模型_如何使用PowerDesigner创建物理数据模型(PDM)
- sharding-jdbc分库分表的 4种分片策略
- 十年JAVA架构经验总结:这几点尤为关键!
- 清华学长教你用Python 批量加水印只需一行命令!
- matlab 汽车 流场,matlab画流场图
- Docker compose多容器管理
- PHP验证码和Ajax验证
- 云计算 - OpenStack
- python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...