MVC(二、控制器 Action方法参数与返回值)
2017-01-20 13:56
477 查看
1、action方法接收浏览器参数
1)获取get数据
获取路由url中配置好的制定参数:
public ActionResult Index(int id){ }
直接通过请求上下文对象里的 Request获取url ?后的的参数:
浏览器请求路径为:/User/UserList/1?fun=jp
Request.QueryString["fun"];
2)获取post数据
通过Request.Form[“name”]逐个获取表单提交的数据:
Request.Form["name"];
通过FormCollection form逐个获取表单提交的数据:
[HttpPost] public string Query(FormCollection form){ return form["name"]; }
通过实体对象 model 一次性获取表单元素的数据,并设置到实体对象对应的属性中:
[HttpPost] public string Query(Student model){ return model.Name; }
2、action返回值类型
返回类型 | 描述 |
---|---|
View | 将视图呈现为网页 |
PartialView | 呈现分部视图,该分部视图定义可呈现在另一视图内的某视图的一部分 |
Redirect | 使用其 URL 重定向到另一操作方法 |
RedirectToAction | 重定向到另一操作方法 |
RedirectToRoute | 重定向到另一操作方法 |
Content | 返回用户定义的内容类型 |
Json | 返回序列化的 JSON 对象 |
JavaScript | 返回可在客户端上执行的脚本 |
File | 返回要写入响应中的二进制输出 |
(无) | 表示在操作方法必须返回 null 结果 (void) 的情况下所使用的返回值 |
Controller和View的数据传输方式有四种
ViewData、ViewBag、TempData、ViewModel
4、ViewData
1)将一个字符串传值到视图中
public ActionResult Index() { ViewData["str1"]= "这是一个字符串"; return View(); }
在视图中我们可以用下面代码将字符串显示出来
<h1>@ViewData["str1"]</h1>
2)将一个字符串集合传递到视图中
public ActionResult Index() { List<string> str1= new List<string>(); str1.Add("1111"); str1.Add("2222"); str1.Add("3333"); ViewData["str"] = str1; return View(); }
在视图中我们通过下面语句将str1的值显示出来
@foreach (var a in ViewData["str"] as List<string>) { @a }
注:ViewData是Key/Value字典集合,需要转换合适的类型,不能直接在foreach里面使用
3)将一个datatable的值传递到视图中
public ActionResult Index() { DataTable newtable = new DataTable("d"); newtable.Columns.Add("商品编号", typeof(string)); newtable.Columns.Add("客户编号", typeof(string)); DataRow NewRow = newtable.NewRow(); NewRow["商品编号"] = "132323213434"; NewRow["客户编号"] = "344223443244"; newtable.Rows.Add(NewRow); DataRow SNewRow = newtable.NewRow(); SNewRow["商品编号"] = "343432445456"; SNewRow["客户编号"] = "454523432453"; newtable.Rows.Add(SNewRow); ViewData["dt"]= newtable; return View(); }
在视图中我们通过下面语句将dt的值显示出来
@using System.Data; <ul> @foreach(DataRow dr in (ViewData["dt"] as DataTable).Rows) { <li> @dr["商品编号"],@dr["客户编号"], </li> } </ul>
5、ViewBag
是dynamic类型对像,会在程序运行的过程中被解析,可以直接在foreach里直接使用
public ActionResult Index() { ViewBag.str="这是一个字符串"; return View(); }
在视图中我们通过下面语句将str1的值显示出来
<h1>@ViewBag.str</h1>
6、TempData
TempData保存的数据是存储在Session中,Controller每次请求时都是从Session中取到TempData(),然后清除Session,获取完TempData的数据,虽然保存的内部字典中,但字典中的每个条目在访问一次后就从Controller中删除,所以TempData最多经过一次Controller传递,并且每个元素最多只能被访问一次然后就会呗自动删除。
注意:这里的一次访问是指从一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除
7、ViewModel
将一个字符串集合传递到视图中
public ActionResult Index() { List<string> str1= new List<string>(); str1.Add("1111"); str1.Add("2222"); str1.Add("3333"); return View(str1); }
在视图中我们通过下面语句将str1的值显示出来
为了让View知道我们传过去的是哪一个对象,我们需要将@model关键字指向ViewModel,就像你在指定一个一般的model一样。
@model FourthCoffee.Web.ViewModels.CustomerViewModel
调用@model
@foreach (var a in model) { @a }
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 星外ASP.Net的安全设置相关说明
- C#、ASP.NET通用扩展工具类之TypeParse
- asp.net创建事务的方法
- 实现ASP.NET无刷新下载并提示下载完成的开发思路
- C#、ASP.NET通用扩展工具类之LogicSugar
- C#实现DataTable映射成Model的方法(附源码)
- C#.NET 图片水印添加代码
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- 程序中常用的种代码
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- 在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程
- ASP.NET页面间的传值的几种方法
- 在ASP.NET 2.0中操作数据之二十四:分页和排序报表数据
- C# MVC模式下商品抽奖功能实现
- 入侵ASP.net网站的经验附利用代码
- phalcon model在插入或更新时会自动验证非空字段的解决办法
- Zend的MVC机制使用分析(二)
- 盘点PHP和ASP.NET的10大对比!
- JavaWeb程序架构模式的演进