mvc ActionResult

我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如

 public ActionResult Index()
 {
    return View();
}

 

除了View()之外那我们这里还能用于返回什么值呢?

一、ascx页面

场景:要返回代码片断,比如Ajax返回一个子页

我们先新建一个Action

 public ActionResult Ascx()
 {
  return PartialView();
 }

 我们下面再建一个View,仍然是在Action中点右键,AddView。

 

于是新建了一个ascx页,我们将之少做改写一下

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<div>
得到一个ascx
</div>



***实际开发 MVC中控制js代码

大家觉得MVC的架构变了,但其实原理和Asp.net一样,还是用 Response来输出数据

所以,只要在 Action 的 Return 函数前调用 Response.Write("text"); 即可实现。

其实和以前一样,下面举个例子,在一个页面中弹出一个对话框后再跳转到别的页面

public ActionResult js()
{
//弹出对话框
Response.Write(<script>alert('js');</script>));
//跳转到index
Response.Write("<script>window.location.href='" + Url.Action("index") + "';</script>");
return null;
}

 修改版:

  public ActionResult js()
        {
            ViewData["JSAlert"] = "保存成功";
            ViewData["JSHref"] = "保存成功";
            return PartialView("JS");
        }

然后返回一个 用户控件

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl"%>
<script type="text/jscript">
alert(
'<%=ViewData["JSAlert"] %>');
window.location.href
='<%=ViewData["JSHref"] %>';
</script>

二、返回文本

除了上述情况,有时我们还会仅返回一段文本。

此时我们可以使用以下Action形式:

public ActionResult Text(){
return Content("这是一段文本");
}

 

三、返回Json

有时我们在调用Ajax时还会要求返回对象为Json序列化的结果,如:

  public ActionResult ShowJson()
      {
           var m = new你定义的class
           {
                Name = "LSW",
                falg= "T_SP"
            };
            return Json(m);
        }

 

返回JSON格式:客户端直接获取

{"Name":"LSW","falg":“T_SP”}

四、输出JS文件

大多时候js文件都是静态的,但有时js文件可能也要动态生成这时我们可以这样输出

        public ActionResult Js()
        {
            return JavaScript("var x=0;");
        }

 

我们访问之,得到一个正常页面但其Content-Type:application/x-javascript; charset=utf-8

五、页面跳转(具体的参数 用鼠标对着方法传到自定义 我就是这样学习的)

1.跳转到Url

 public ActionResult rdurl()
     {
          return Redirect("http://www.baidu.com");
      }

 

2.跳转到Action

   public ActionResult rdaction()
    {
        return RedirectToAction("Index","Eice");
     }

 

3.跳转到Routing规则

   public ActionResult rdrouting()
      {
          return RedirectToRoute("Default",//Route名
            new{
                 Controller = "t_sp",
                  Action = "Index"
              });
        }

 

六、显示文件(一般在文件下载过程用到)

   public ActionResult fn()
        {
            return File(
                "/Content/site.css"//文件路径
                , "text/css"//文件类型
                );
        }

 

详细图 下载

下载大图

--ActionResult及其子类的对照表

ActionResult的子类名称

说明

ViewResult

表示HTML的页面内容

EmptyResult

表示空白的页面内容

RedirectResult

表示定位到另外一个URL

JsonResult

表示可以运用到AJAX程序中JSON结果

JavaScriptResult

表示一个JavaScript对象

ContentResult

表示一个文本内容

FileContentResult

表示一个可以下载的、二进制内容的文件

FilePathResult

表示一个可以下载的、指定路径的文件

FileStreamResult

表示一个可以下载的、流式的文件

 

通过我们在代码中编写,不难看到如下的一段代码:

public ActionResult Index()

        {

            return View();

        }

可能有人会有疑问,既然我定义的是ActionResult,为什么返回值会是View呢?

其实这个View的类型是ActionResult的子类ViewResult,有关Controller中的方法与返回对象请参照下表:

Controller中的方法

返回对象

View

ViewResult

Redirect

RedirectResult

RedirectToAction

RedirectToActionResult

RedirectToRoute

RedirectToRouteResult

Json

JsonResult

JavaScriptResult

JavaScriptResult

Content

ContentResult

File

FileContentResultFilePathResultFileStreamResult

posted @ 2012-09-05 00:38  s_p  阅读(953)  评论(0编辑  收藏  举报