• MVC ActionResult JsonResult


    以下是ActionResult的继承图:

    image

    大概的分类:

    1. EmptyResult:表示不执行任何操作的结果
    2. ContentResult :返回文本结果
    3. JavaScriptResult:返回结果为JavaScript
    4. JsonResult :返回Json结构数据
    5. RedirectResult,RedirectToRouteResult
    6. FileContentResult,FilePathResult,FileStreamResult
    7. ViewResult,PartialViewResult
    8. HttpNotFoundResult,HttpUnauthorizedResult

    JsonResult

    大家都知道AJax是使用Json来传输数据的,Json数据在JavaScript中被广泛使用,所以JsonResult的使用范围是非常管的,下面代码演示了在MVC的Ajax.ActionLink中如何使用JsonResult

    Action

    [HttpPost]
    public ActionResult GetDetail()
    {
        return Json(new
        {
            UserName = "Test User Name",
            Email = "Test@Test.com",
            Desc = "Test Desc"
        });
    }

    View

    <script type="text/javascript">
        function handleSuccess(context) {
            $("#userName").html(context.UserName);
            $("#email").html(context.Email);
            $("#desc").html(context.Desc);
        }
    </script>
    <table>
        <tr>
            <td>
                UserName
            </td>
            <td>
                <div id="userName" />
            </td>
        </tr>
        <tr>
            <td>
                Email
            </td>
            <td>
                <div id="email" />
            </td>
        </tr>
        <tr>
            <td>
                Desc
            </td>
            <td>
                <div id="desc" />
            </td>
        </tr>
    </table>
    @Ajax.ActionLink("Click Me", "GetDetail", new AjaxOptions { HttpMethod = "POST", OnSuccess = "handleSuccess" })

    在点击ActionLink后,会调用GetDetailAction返回JsonResult,在OnSuccess方法中可以对返回的结果进行处理。

    当然要使用以上功能需要引用以下文件:

    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
    

    以上使用方法是在MVC3上测试通过的,但是在参考MVC2的代码时,发现用法上有以下差异:

    在MVC2中是不支持jquery.unobtrusive-ajax.min.js的,返回的context也需要做以下处理,

    <script type="text/javascript">
        function handleSuccess(context) {
            var json = context.get_data();
            var data = Sys.Serialization.JavaScriptSerializer.deserialize(json);
            $("#userName").html(data.UserName);
            $("#email").html(data.Email);
            $("#desc").html(data.Desc);
        }
    </script>
  • 相关阅读:
    cp文件夹
    当@PathVariable遇上中文和点
    frameset框架样式 加边框
    页面显示滑动条样式
    109.110.100.56 samba用户名 PAS, 密码 111111
    后台访问记录
    后台处理excel下载输出流
    ul li排版 左右对齐
    社保卡补办
    删除表 (truncate 、delete 、drop)
  • 原文地址:https://www.cnblogs.com/eric-qin/p/4323916.html
Copyright © 2020-2023  润新知