• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETMVCcontroller和action

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
1. 在 action 方法中获取本次请求的参数和值,有以下两种办法可以实现:
    1.1 最直接的方式, 从上下文对象中获取。通常情况下,我们的controller类都是继承自 System.Web.Mvc.Controller 类,这个父类中有好几个对象,在我们的控制器类中可以直接使用,如,Request , Response , RouteData , HttpContext , Server, Session 等。下面列举一些常用的情况
     
属性 类型 描述
Request.QueryString NameValueCollection 从本次Get请求中获取查询字符串的变量和值
Request.Form NameValueCollection 从本次Post请求中获取变量和值
Request.Cookie HttpCookieCollection 本次请求中,浏览器发送的Cookie值
Request.Uri Uri 请求的URL路径
RouteData.Values RouteValueDictionary 路由参数
HttpContext.Session HttpSessionStateBase 获取session中的键值
User IPrincipal 获取当前用户的授权信息
      
        我们在 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 对象。
      
Type 描述 方法名
ViewResult 显示指定的或默认的View模板 View
PartialViewResult 显示指定的或默认的部分页模板 PartialView
RedirectToRouteResult 重定向

RedirectToAction , RedirectToActionPermanent ,

RedirectToRoute ,  RedirectToRoutePermanent

RedirectRestult 重定向 Redirect ,RedirectPermanent
ContentResult 返回纯文本信息 Content
FileResult 返回二进制文件到浏览器 File
JsonResult 将一个.net 对象序列化为Json字符串返回 Json
HttpUnauthorizedResult 返回HTTP 401  
HttpNotFountResult 找不到指定文件 404 HttpNotFound
 
    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
= DateTime.Now; ViewBag.Message=“hello , world!”; return View(); }
                视图页面的调用方式
                @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() ;
    
 
 
 
 
 
 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.netMVC和WebApi解析复杂JSON发布时间:2022-07-10
下一篇:
ajax调用asp.net后台方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap