在视图中显示Json对象

时间:2016-05-19 22:48:55

标签: c# json asp.net-mvc

我有一个运行webAPI的MVC方法,并以json格式返回一些问题和答案列表。我尝试在我的视图中显示这些数据。但它将它们显示为json格式并且根本不显示我的视图。我喜欢在桌子下面展示常见问题。 这是我的控制器方法:

    [Route("showcontact")]
    [HttpGet]
    public async Task<ActionResult> ShowContact(int loanId)
    {
        string json = string.Empty;
        List<Faq> FaqObject = null;
        var responseApi = await httpClient.GetAsync(string.Format("{0}/{1}", CommonApiBaseUrlValue, "faqs"));
        if (responseApi.IsSuccessStatusCode)
        {
            json = responseApi.Content.ReadAsStringAsync().Result;
            FaqObject = new JavaScriptSerializer().Deserialize<List<Faq>>(json);
        }

        var response = new
        {
            success = FaqObject != null,
            data = FaqObject
        };
        return Json(response, JsonRequestBehavior.AllowGet);
    }

这是我的观点:

@model Carfinance.Loans.Web.ViewModels.HelpCenterViewModel
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/HelpCenter/HelpCenter.js"></script>

<table>
<tr><td><h2>Contact Us</h2></td></tr>
<tr><td>FUNDING SPECIALIST:</td><td>PHONE & EMAIL:</td><td>HOURS:</td></tr>   
</table>

这是我的js文件,用于显示json内容,但它根本不会显示此文件,因为即使警报未显示。

 $(document).ready(function () {
 alert("test");

        var token = $('[name=__RequestVerificationToken]').val();

        $.ajax({
            dataType: "json",
            //headers: { "__RequestVerificationToken": token },
            url: '/showcontact',
            type: 'GET',
            cache: false,
            success: function (result) {

                jQuery.parseJSON(result);

            },
            error: function () { debugger; alert('failure'); }
        });

});

这是我得到的而不是查看:

 {
  success: true,
  data: [
    {
      Id: 1,
      Category: "General",
      Question: "Question1",
      Answer: "Answer1"
      },
      {
      Id: 2,
      Category: "Stipulation related",
      Question: "Question2",
      Answer: "Answer2"
      }
      ]
      }

3 个答案:

答案 0 :(得分:0)

你得到了数据,现在你只需要一个放置它的地方!

从您的代码中,我发现您的View没有指定的元素来显示您从API中检索的数据。

尝试在Ajax调用中迭代结果,以构建您刚才请求的数据表。

答案 1 :(得分:0)

这是一种预期的行为,因为您要返回JsonResult而不是ViewResult的实例。

您需要重新考虑您的方法并定义您想要的Action返回:Json对象还是渲染视图? 如果您选择第一个选项,您的ajax回调必须处理json数据并使用javascript填充DOM。

如果你想要渲染的视图,你必须使用return View(model),你可以使用Razor来定义视图的模板。

答案 2 :(得分:0)

return Json()更改为return View()。这将让MVC查找返回的视图模板。您检索到的Json可以作为模型传递(通过将其直接放到视图中:return View(json)或将其放在ViewBag中。