ASP.NET MVC傳回Json格式的資料

ASP.NET MVC傳回Json格式的資料

上星期有寫到一段程式,在一個按鈕上綁一個Click事件,

如果觸發就用Ajax去Controller撈兩個字串回來。

當時我還沒用過Json,所以只好用”,”將兩個字串隔開,在Client上再利用Split切成兩個字串

但這樣有點蠢,剛好趁這機會來試試看Json到底是什麼?怎麼用?

還是先看看維基吧 Json-Wiki,總之是一種資料交換的語言

而MVC的ActionResult中就有一種是回傳Json

在Action中,將資料塞入一個class,傳回return Json(class)


{
     TestJson model=new TestJson(){ HtmlTitle = "TestTitile",  HtmlContent = "TestContent" };
     return Json(model,JsonRequestBehavior.AllowGet);
}

需要注意的只有JsonRequestBehavior.AllowGet

因MVC2.0 預設禁止通過Get傳回JsonResult,因此使用Get當使用 Get 的時候必須加上這個,

如果是Post的話就不用加了

以下是View(該include的js檔要記得)


        $(function () {
            $("#GetJsonBtn").click(function () {
                $.ajax({
                    url: '<%=Url.Action("GetJson") %>',
                    type: "Get",
                    dataType: "json",
                    success: SetValue
                });
            });
        });
        function SetValue(data) {
            $('#HtmlTitle').html(data.HtmlTitle);
            $('#HtmlContent').html(data.HtmlContent);
        }
    </script>
    <input type="button" value="利用AJAX抓值(傳回Json)" id="GetJsonBtn" />
    <br />
    <div id="HtmlTitle">
    </div>
    <div id="HtemlDate">
    </div>
    <div id="HtmlContent">
    </div>
</asp:Content>

畫面就沒什麼特別的啦,按下Button之後,就會去Controller中撈回資料,加到div裡面

ee9b7cb777e743b785ffd1291213ae63

另外script這樣寫也可以囉


        $(function () {
            $("#GetJsonBtn").click(function () {
                $.getJSON('<%=Url.Action("GetJson") %>', null, SetValue);
            });
        });
        function SetValue(data) {
            $('#HtmlTitle').html(data.HtmlTitle);
            $('#HtmlContent').html(data.HtmlContent);
        }
</script>

參考資料

jQuery.ajax()

jQuery.getJSON()