在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 在 action 方法中获取本次请求的参数和值,有以下两种办法可以实现:
1.1 最直接的方式, 从上下文对象中获取。通常情况下,我们的controller类都是继承自 System.Web.Mvc.Controller 类,这个父类中有好几个对象,在我们的控制器类中可以直接使用,如,Request , Response , RouteData , HttpContext , Server, Session 等。下面列举一些常用的情况
我们在 action 中会这样用
public ActionResult Index() { string info = Request.QueryString["info"] ; ViewBag.Info = info ; return View(); } 1.2 从 action 的参数中获取 。当处理请求时,MVC框架会自动从Request.QueryString ,Request.Form ,Request.RouteData.Values 等集合中根据参数名为参数赋值,这些参数不能包含 out 和 ref 关键字 ,大小写不敏感 。
public ActionResult Index( string info ) { ViewBag.Info = info ; return View(); } 绑定参数大概经过这么一个过程,首先,由 data provider 去从上述的几个几何对象中取出值 ,然后赋给data binder ,由 data binder 进行验证、类型转换等操作,然后把值赋给 action 的参数 这个参数的类型可以是任意的 .net 类型 ,具体的绑定方式会在以后的文章中具体说。如果 model binder 无法为某个参数赋值,那么,可能为这个值赋默认值(值类型和引用类型的默认值不一样),也可能抛出异常。为了避免这种情况的发生,我们可以手动地为 action 的参数赋默认值,如下面代码所示:
public ActionResult Index( string info ="Hello , World !" ) { ViewBag.Info = info ; return View(); } 如果MVC框架未能给 info 变量赋值,那么它的值就是默认值“Hello,World!”。
2. 返回多种 ActionResult 对象。当 action 方法执行完以后,要给请求的用户返回数据。我们可以让 action 方法返回 HTML ,或者Response.Redirect 到一个新的URL,但是,这样子一方面写代码的效率低,而且不容易维护,不利于单元测试。我们可以简单地返回一个 ActionResult 对象。
3. 返回ViewResult 。 从action 向视图传递数据可以通过以下三种方式
3.1 向视图传递一个 Model 对象,接收数据的视图应该是一个强类型的视图。
public ActionResult About() { DateTime date = DateTime.Now; return View( date ); } 视图页面调用方式
@model DateTime
@Model.Month
3.2 通过ViewBag向视图传递数据。由于ViewBag是 dynamic 类型的,所以,我们可以给 ViewBag 赋任何属性的值
public ActionResult About() 视图页面的调用方式
@ViewBag.Date
@ViewBag.Message
3.3 通过 ViewData 向视图传递数据。
public ActionResult About() { ViewData["Date"] = DateTime.Now; ViewData["Message"]=“hello , world!”; return View(); }
视图页面的调用方式(需要强制类型转换)
@ViewData["Date"]
@ViewData["Message"]
4 返回 RedirectResult 对象。RedirectResult 分为两种,第一种是通常意义上的跳转,第二种是永久跳转 ,既,在浏览器中通过“后退“是退不回来的,这种跳转的方法名上都是以 "Permanent" 结尾的,例如,RedirectToActionPermanent , RedirectToRoutePermanent 等。各种方法只需要根据重载的参数即可使用,此处就不做介绍了。
5. 返回 ContentResult 对象。 如果想返回文本信息,如 XML , HTML ,或者纯文本信息,可以返回ContentResult对象。
return Content("This is content", "text/plain", System.Text.Encoding.Default);
6. 返回 JsonResult 对象 。Json是一种目前比较流行的跨平台的纯文本格式,一般用于Ajax技术。
return Json(JsonData) ;
7. 返回 FileResult 对象 。一般用于提供文件下载。
return File("fileName" , "contentType" ,"downloadName") ;
8. 返回错误信息或返回HTTP代码
return new HttpStatusCodeResult(404, " URL not found 。。。") ;
或者返回封装好的方法 return HttpNotFound() ;
|
请发表评论