【问题标题】:How to pass json result from controller to view in mvc如何将json结果从控制器传递到mvc中查看
【发布时间】:2013-06-25 16:17:04
【问题描述】:

我使用 mvc4 开发了一个 web 应用程序。我需要从控制器传递一些 <IList> 以查看 json 结果。

下面是控制器类中的代码

public ActionResult GetTradeUserData([DataSourceRequest] DataSourceRequest request, int test) 
        {
            wholeSaleModelUser = new WholeSaleInfoService().PopulateWholeSaleUserData(test);
            return Json(wholeSaleModelUser, JsonRequestBehavior.AllowGet);
        }

这是视图类的代码

<script>
$("#submitMarketUser").click(function () {
    $.ajax({
        url: "WholeSaleTrade/GetTradeUserData",
        data: { test: $("#Names").val() },
        dataType: "json",
        type: "POST",
        success: function (data) {

            alert(data.EmpNm);

            $("#Contact").val(data.Contact);
            $("#EPFNo").val(data.EPFNo);
            $("#TitlKy").val(data.TitlKy);
            $("#EmpNm").val(data.EmpNm);
            $("#NameInInitials").val(data.NameInInitials);
            $("#DtBirth").val(dateFromStringWithTime(data.DtBirth));
        },
        error: function (e) {
            return false;
        }
    });
});

我的问题是 data 对象没有获取任何数据并弹出带有文本为“未定义”的警报。

谁能帮帮我。

【问题讨论】:

  • GetTradeUserData 方法是否标有 [HttpPost] 属性?否则该方法不会被命中,因为它将默认接受 GET 请求并且您正在发布。此外,您是否添加了断点并查看您的代码是否真的被命中?
  • alert(JSON.stringify(data)); 在您的成功回调中显示什么?
  • 你用的是什么浏览器?
  • @steinar 是的,当然.. return Json(wholeSaleModelUser, JsonRequestBehavior.AllowGet); 在这里 WholeSaleModelUser 获取值作为代码命中
  • @Andrei 谷歌浏览器

标签: c# json asp.net-mvc-4 razor


【解决方案1】:

好的,既然您终于显示了您的服务发送的 JSON,那么问题出在哪里就很清楚了。你有一组用户,而不是一个元素:

[{"Name":"MarketFarmer","Contact":777369369,"Email":"mf@htnsys.com","Fax":114652652,"Address":"kalubowila road,dehivala"}]

另外请注意,此对象的有效属性是 NameContactEmailFaxAddress,但在您的代码中,您正试图读取一些 EPFNoTitlKy , EmpNo, NameInInitialsDtBirth 在您返回的对象中不存在

因此,为了访问它的值,您需要获取数组中的元素,然后您可以访问可用的属性:

success: function (data) {
    var employee = data[0];

    alert(employee.Name);
    alert(employee.Contact);
    alert(employee.Email);
},

【讨论】:

  • 非常感谢先生!最后我用你的回答解决了问题。
  • 顺便说一句,我的最后一步是我需要将这些值分配给存在于不同视图中的文本框(不在此脚本运行的视图中)。如何做到这一点?如何通过那些值到局部视图或另一个视图???
【解决方案2】:

也许您应该在控制器中将 ActionResult 更改为 JsonResult

public JsonResult GetTradeUserData([DataSourceRequest] DataSourceRequest request, int test) 
        {
            wholeSaleModelUser = new WholeSaleInfoService().PopulateWholeSaleUserData(test);
            return this.Json(wholeSaleModelUser, JsonRequestBehavior.AllowGet);
        }

【讨论】:

  • 我做了更改,但我无法得到肯定的答案。问题仍然存在。
  • 您是否测试过您的 WholeSaleModelUser 变量是否为空?您是否在控制器方法中添加了断点?
  • 是的,我检查了断点和 WholeSaleModelUser 变量,得到了适当的结果,但不会在视图类中得到它们
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
相关资源
最近更新 更多