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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM