使用form的知识点

在了解form标签先知道,如果没有form标签,Internet将变成一个枯燥文档的只读存储库。 你将不能进行网上搜索,也不能在网上购买任何东西。如果一个邪恶的神偷今晚盗取了每一个网站的form标签,那么文明将于明天午餐时分消失殆尽。

许多转向MVC框架的开发人员都已经使用过ASP.NET Web Forms: Web Forms没完全利用fbrm标签的强大功能(也可以说是Web Forms为实现自己的目标才管理和 利用form标签的)。所以应该原谅那些忘记form标签功能(例如创建HTTP GET请求 的功能)的Web Forms开发人员。

首先是action和method的特性,表单是包含输入元素的容器,其中包含按钮、复选框、文本框等元素。表单中的这些输 入元素使得用户能够向页面中输入信息,并把输入的信息提交给服务器。但是提交给什么服务器呢?这些信息又是如何到达服务器的呢?这些问题的答案就在两个非常重要的form标签特性中,即action和method特性。

 action特性用以告知Web浏览器信息发往哪里,所以action就顺理成章地包含一个URL。 这里的URL可以是相对的,但当向一个不同的应用程序或服务器发送信息时,它也以以是绝对的。下面的fbrm标签将可以从任何应用程序"响站点www.bing.com的search页面发送个搜索词(输入元素的名称为q) :

 

显而易见,上面代码段中的form标签不包含method特性。当发送信息时,method特性可 以告知浏览器是使用HTTP POST还是使用HTTP GET。现在可能会认为表单默认的方法是 HTTP POST毕竟经常通过提交表单来更新自己的资料,提交信用卡信息来购物和对YouTube 上有趣的动物视频发表评论。然而,尽管如此,默认方法仍是“get”,所以默认情况下一表单 发送的是HTTP GET请求。

如果不想让浏览器把输入值放入查询字符串中,而是想放入HTTP请求的主体中,就可 以给method特性赋值post。尽管这样也可以成功地向搜索引擎发送POST请求并能看到相应 的搜索结果,但是相对而言,使用HTTP GET请求会更好一些。

不像POST请求,GET请求的表单和HTML辅助方法 所有参数都在URL中,因此可以为GET请求建M书签。可以在电子邮件或网页中将这些URL 作为超链接来使用,除此之外,还可以保留所有的表单输入值。 更重要的是,因为GET方法代表的是嘉等操作和只读操作,所以它是做这些工作的最好 选择。换而言之,因为GET不会(或不应该)改变服务器上的状态,所以客户端可以向服务器 重复地发送GET请求而不会产生负面影响。

 另一方面,POST请求可以用来提交信用卡交易信息、向购物车中添加专辑或者修改密 码等。POST请求通常情况下会改变服务器上 的状态,重复提交POST请求可能会产生不良 后果(比如购物时,由于重复提交两次POST 请求,而产生两个订单)。许多浏览器现在都 可以帮助用户避免重复提交POST请求。下图展示了 Chrome浏览器在刷新POST请求 时的反应。

当用户使用HTTP GET请求提交表单时,浏览器会提取表单中输入元素的name特性值及 其相应的value特性值,并将它们放入到查询字符串中。换句话说,上面的表单将把浏览器导航 到URL(假设用户正在搜索关键词love) : 必应?q=love

通常情况在W e b应用程序中,GET请求用于读操作,POST请求用于写操作(通常包 括更新、创建和删除)。为音乐付款就使用POST请求;接下来将要看到的查询音乐情形,就 需要使用GET请求。

  可以通过视图的Himi属性调用HTML辅助方法。相应地,也可以通过Uri属性调用URL 辅助方法,通过Ajax属性调用Ajax辅助方法。所有这些方法都有一个共同的目标:使视图编 码变得容易。在控制器中也存在有URL辅助方法。

大部分的辅助方法都输出HTM«K记,尤其是HTML辅助方法。例如,前面提到BeginForm 辅助方法可以用来为搜索表单构建一个强壮的表单标签,而不必编写很多代码:

BcginForm辅助方法输出的标记很可能与前面第一次实现搜索表单时一样。然而,在后 台,该辅助方法与路由引擎协调工作来生成合适的URL,从而当应用程序部署位置发生改变 时,使代码更富有弹性。 注意,BcginForm辅助方法输出的是起始和结束标签。辅助方法在调用 BeginForm期间生成一个起始标签,并返回一个实现了接口Disposable的对象。当视图中的代 码执行到结束using语句的花括号位置时,由于隐式调用了Dispose方法,因此辅助方法会生成 一个标签。这里u s i n g语句使得代码简洁而优雅。如果发现这样不适合自己,也可以 使用卜.面的方法,它的代码看起来前后对称:

乍一看,辅助方法(比如BeginForm)好像使程序员远离了王牌一许多程序员想控制的低 级HTML。一旦开始使用辅助方法,就会意识到它们在保持高效率的同时还与王牌保持近距 离接触。换句话说,我们在不必编写很多代码来处理细节问题的情况下,仍然可以完全控制 HTML,,辅助方法除了能生成尖括号之外,还能正确地编码特性,构建指向正确资源的URL, 设置输入元素的名称以简化模型绑定。总之,辅助方法是程序员的好朋友

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值