MVC 表单提交

用户提交表单

写法一(推荐)

一,不带参数

 

 1 <body>  
 2     <!--一下写法生成:<form action="/Home/Index" method="post"> BeginForm里不带参数,就表示请求从哪里来,表单就提交到哪里去。  
 3         因为当前视图是Home控制器下的Index视图。所以,当请求这个Index视图的时候,form的action的提交的地址就是/Home/Index  
 4         -->  
 5     @using (Html.BeginForm("Add","Home",new{ id=200}))  
 6     {  
 7         <input type="text" name="userName" />  
 8     }  
 9   
10 </body>

二,带参数

1 <body>  
2     <!--一下写法生成:<form action="/Home/Add/200?pric=25" method="get">  -->  
3     @using (Html.BeginForm("Add","Home",new{ id=200,pric=25},FormMethod.Get))  
4     {  
5         <input type="text" name="userName" />  
6     }  
7   
8 </body> 

三,程序员自己指定一个路由,来生成一个action的URL。使用Html.BeginRouteForm(...)

不带参数:

1 <body>  
2     <!--由程序员指定一个路由规则,来生成一个action的URL  -->  
3     <!--以下代码最后生成这样:<form action="/Index/Home" method="post">  注意:按照Default2这个路由规则来生成的,所有Index在前面-->  
4     @using (Html.BeginRouteForm("Default2"))  
5     {  
6         <input type="text" name="userName" />  
7     }  
8   
9 </body> 

带参数:

1 <body>  
2     <!--由程序员指定一个路由规则,来生成一个action的URL  -->  
3     <!--以下代码最后生成这样:<form action="/Index/Home/100" method="post"> 注意:按照Default2这个路由规则来生成的,所有Index在前面-->  
4     @using (Html.BeginRouteForm("Default2",new{controller="Home",action="Index",Id=100},FormMethod.Post))  
5     {  
6         <input type="text" name="userName" />  
7     }  
8   
9 </body> 

下面是路由规则

 1 namespace MvcAppEF  
 2 {  
 3     public class RouteConfig  
 4     {  
 5         public static void RegisterRoutes(RouteCollection routes)  
 6         {  
 7             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
 8   
 9             routes.MapRoute(  
10                 name: "Default",  
11                 url: "{controller}/{action}/{id}",  
12                 defaults: new { controller = "Test", action = "Index2", id = UrlParameter.Optional }  
13             );  
14   
15             routes.MapRoute(  
16                 name: "Default2",  
17                 //注意:为了测试Html.BeginRouteForm,我将{action}这个占位符与{controller}占位符换了一下位置。我们来检查一下Html.BeginRouteForm最后生成什么样的url?  
18                 url: "{action}/{controller}/{id}/{name}",  
19                 defaults: new { controller = "Test", action = "Index2", id = UrlParameter.Optional, name = UrlParameter.Optional }  
20             );  
21         }  
22     }  
23 }  

写法二(不推荐)

不带参数:

1 <body>  
2     <!--一下写法生成:<form action="/Home/Add" method="post">-->  
3     @{Html.BeginForm("Add", "Home");}  
4   
5     <input type="text" name="userName" />  
6   
7     @{Html.EndForm();};  <!--这段代码最终生成:</form>;-->  
8   
9 </body>  

带参数:

1 <body>  
2     <!--一下写法生成:<form action="/Home/Add/100" method="post">-->  
3     @{Html.BeginForm("Add", "Home", new { id=100 },FormMethod.Post);}  
4   
5     <input type="text" name="userName" />  
6   
7     @{Html.EndForm();};  <!--这段代码最终生成:</form>;-->  
8   
9 </body>  

 

posted @ 2017-08-09 11:19  FelixWang  阅读(271)  评论(0编辑  收藏  举报