1. <form action="/controller/action" method="post">

...

</form>

*action 属性指定表单要提交到的网页地址

*method 属性指定表单提交时使用的方法(如: get , post)

2. 表单提交按钮可以使用<input type="submit" value="Submit">或<button type="submit">Submit</button>

*推荐使用<button>标签

3. MVC 中的 action 可以使用 [HttpGet] 或 [HttpPost] 特性来限制 action 只接受get请求或post请求

*如果 action 没有添加 [HttpGet] 或 [HttpPost] 特性,则两种方式的请求都接受

4. 在视图中获取模型状态对象,使用 ViewData.ModelState

例:获取模型验证的错误信息并显示

        @if (ViewData.ModelState["Name"] != null && ViewData.ModelState["Name"].Errors.Count > )
{
<span class="help-block">@ViewData.ModelState["Name"].Errors[].ErrorMessage</span>
}

5. 表单隐藏字段

<input type="hidden" name="name" value="value" />

6. 注意表单重复提交问题,当用户发生多次点击提交按钮,刷新页面,后退页面后再次点击提交等操作时会重复提交表单。

*可在客户端或服务端等多个位置进行检测以防止重复提交,比如在服务端使用guid值标识表单

7. 注意CSRF(跨站请求伪造)攻击

*在asp.net mvc中提供了 ValidateAntiForgeryToken 特性和 @Html.AntiForgeryToken() 辅助方法

8. 注意过多提交问题,模型绑定时如果没有加以限制,将会在http请求中搜索并绑定所有的模型属性,当用户恶意提交了没有在表单中使用的属性时也会被绑定

*使用 [Bind] 特性限制要绑定的属性

例:使用 [Bind] 特性的 Include 属性设置绑定白名单,限制只有名单内的模型属性才会被绑定(多个属性名称之间使用逗号分隔)

        [HttpPost]
public ActionResult AddModel([Bind(Include = "Name")]Model model)
{
if (ModelState.IsValid)
{
return RedirectToAction("Action");
} return View(model);
}

9. http请求中的参数的名称与Action方法中参数的名称不区分大小写

asp.net mvc 表单相关的更多相关文章

  1. ASP.NET MVC 表单的几种提交方式

    下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...

  2. Asp.Net Mvc表单提交(批量提交)

    Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 采用form表单提交 name=value类型,只要Action参数的变量名和input的name相同就行 html ...

  3. ASP.NET MVC 表单提交多层子级实体集合数据到控制器中

    于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...

  4. Asp.net Mvc 表单验证(气泡提示)

    将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...

  5. ASP.NET\ASP.NET MVC表单提交遇到的问题结论

    同步提交的两种基本方式 1,用type=“submit”按钮.form没有必要runat=“server” <form method="post" action=" ...

  6. asp.net mvc表单提交的几种方式

    asp.net MVC中form提交和控制器接受form提交过来的数据 MVC中form提交和在控制器中怎样接受 1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的R ...

  7. Asp.Net Mvc表单提交之List集合

    一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...

  8. ASP.NET MVC 表单submit()

    HTML代码 <form id="frmLogin"> <div class="form-group has-feedback"> &l ...

  9. asp.net mvc表单异步提交

    html代码: @using (Html.BeginForm("xx", "xx", FormMethod.Post, new { enctype = &quo ...

随机推荐

  1. Spring基础知识

    Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...

  2. java入门 第三季4

    java集合框架中 java集合框架下

  3. 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

    在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...

  4. “连接配置中心失败,将无法进行正常管理”--腾讯通RTX管理器

    [故障现象]: 腾讯通RTX管理器提示“连接配置中心失败,将无法进行正常管理” [解决办法]: 在系统服务中启动“RTX_ConfigCenter”服务即可. 文章收集自网络

  5. hadoop2的思想架构

    mapreduce 2 思想架构 mr2解决了mr1的jobTracker的单点颈瓶问题,这个问题会影响hadoop的扩展性,集群的可靠性,mr1中jobTracker负责集群作业的分发,管理,调度, ...

  6. 简单快捷好用的vim配置和终端配置推荐

    vim 配置实用spf13-vim,安装方便简单快捷,极力推荐. 另外oh-my-zsh 终端配置很好,与之搭配使用效果更佳. 安装都很简单,一个脚本搞定, 都是在gitHub上开源的,自行搜索,这里 ...

  7. Pfile VS Spfile (MOS Note 249664.1)

    ============================================================================== Until Oracle 8i DBAs ...

  8. 理解WebService SOAP WSDL

    WebServices简介 先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构, 既然说是一种架构的话,所以一般认为 SOA 是包含 ...

  9. 字符串数组初始化0 与memset 0 效率的分析

    转自:http://www.xuebuyuan.com/1722207.html 结合http://blog.sina.com.cn/s/blog_59d470310100gov8.html来看. 最 ...

  10. 为什么在soui中加载JPG文件失败

    在SOUI中解决解码器是一个独立的模块.不同的解码器决定了程序中能够加载什么样的图片类型.使用SComMgr来加载SOUI的模块时,debug模式下默认的图片解码器是imgdecoder-png.这个 ...