MVC中的传递数据方法
1、使用ViewData。新建一个MvcApplication1,然后在HomoController中的Index动作方法中写一个 ViewData,
1 ViewData["Message"] ="好好学习,天天向上";
然后在Index视图页写上:
1 <%= Html.Encode(ViewData["Message"]) %>
这样就把控制器中的数据传到了视图页上。当然ViewData也可以传递List,在Index动作方法中写一个List,
3 str.Add( " cnblogs " );
4 str.Add( " 博客园 " );
5 str.Add( " MVC " );
6
7 ViewData[ " Message " ] = str;
然后Index视图页也要改一下,
2 <% foreach ( string s in ViewData[ " Message " ] as List < string > )
3 { %>
4 < li >
5 <%= s %></ li >
6 <% } %>
7 </ ul >
这样就把List从控制器传到了视图。
2、 用TempData楚地数据,TempData的用法和ViewData几乎完全一样。同样是在控制器的动作方法中写一个TempData,
然后同样是在视图中写
就OK啦。需注意的是ViewData和TempData是两个不同的数据类型,ViewData只能在一个动作方法中设置,在相关的视图中读取,只对当前的试图页面有效,而TempData可以在多个动作方法中设置、读取。
表单数据绑定
MVC可以用Request.Form或者FormCollection 读取表单数据,具体方法如下:首先要在视图页写一个BeginForm的扩展方法,可以写成
<%=Html. BeginForm("Register","Home")%>,其中的第一个参数表示动作方法名,第二个是控制器名,然后还要写一个FormEnd:<%Html.EndForm();%>。还有一种写法是<%using (Html.BeginForm("Register","Home"))%>,然后写几个TextBox,
用户名: <%= Html.TextBox( " txtName " ) %>< br />
邮箱: <%= Html.TextBox( " txtEmail " ) %>
</ div >
接下来在控制器的动作方法中用Request.Form获取:
string Email = Request.Form[ " txtEmail " ];
ViewData[ " msg " ] = " 用户名: " + Name + " 邮箱: " + Email;
同时也可以用FormCollection获取,用FormCollection获取要在动作方法中传入一个FormCollection类型的参数,
{
string Name = myForm[ " txtName " ];
string Email = myForm[ " txtEmail " ];
ViewData[ " msg " ] = " 用户名: " + Name + " 邮箱: " + Email;
return View();
}
同样可以获取到表单数据对象。