• 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>
  • 相关阅读:
    PVLAN 简介
    SFP光模块与SFP+、XFP、QSFP、GBIC、BIDI的区别
    IP防护等级简介
    工业交换机和普通交换机的区别
    博客园 添加 “返回顶部” 按钮
    Linux SHELL中sh和bash的区别
    vpshere6 ESXI 禁止登陆 "执行此操作的权限被拒绝"
    python icmpdnshttp监控网络各个节点状态,并记录日志
    Python Threading问题:TypeError in Threading. function takes 1 positional argument but 100 were given
    django信号
  • 原文地址:https://www.cnblogs.com/eric-qin/p/4323916.html
Copyright © 2020-2023  润新知