【问题标题】:How to send multiple JSON results from controller to view?如何将多个 JSON 结果从控制器发送到视图?
【发布时间】:2015-09-25 20:11:15
【问题描述】:

这里我从控制器发送一个项目来查看。如何从控制器发送多个项目以查看?

  //Controller 

  public JsonResult GetQuantity(string id)
    {
       string getQuantity = "";
       string items="Hello Quantity"
       getQuantity = items.ToString(CultureInfo.InvariantCulture);
       return Json(getQuantity, JsonRequestBehavior.AllowGet);
    }


        // View

      function GetQuantity(id) {


            var targetDiv = '#divYarnDistributionViewer';
            var url = "/STSM/STSA/YarnDistribution/GetQuantity/" + id;
            var form = $("#frmYarnDistributionViewer");

            var serializedForm = form.serialize();

            $.post(url, serializedForm, function (result) {
                $("#YarnDistribution_StockQuantity").val(result);

            }, "json");

        return false;


    }

【问题讨论】:

    标签: javascript jquery asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    在@JDupont 和@Kevin Simple 的帮助下,我解决了我的问题。
    感谢这些家伙。

         public JsonResult GetQuantity(string id)
          {
             // Here id is not used, i will use it to get Quantity and unit for my project purpose.
            string getQuantity = "";  
            string getUnit = "";       
            string item1="Hello Quantity" 
            string item2="Hello Unit"
            getQuantity = item1.ToString(CultureInfo.InvariantCulture);
            getUnit = item2.ToString(CultureInfo.InvariantCulture);
            return Json(new { getQuantity, getUnit },JsonRequestBehavior.AllowGet);
       }
    
    
        // View
    
      function GetQuantity(id) {
            var targetDiv = '#divYarnDistributionViewer';
            var url = "/STSM/STSA/YarnDistribution/GetQuantity/" + id;
            var form = $("#frmYarnDistributionViewer");
            var serializedForm = form.serialize();
            $.post(url, serializedForm, function (result) {
                $("#YarnDistribution_StockQuantity").val(result.getQuantity);
                $("#YarnDistribution_StockUnit").val(result.getUnit );
    
            }, "json");
    
          return false;
        }
    

    【讨论】:

      【解决方案2】:

      是的,就像在你的控制器中一样:

      return Json(resulst = new {Quantity = 5, Price = 285,...}, JsonRequestBehavior.AllowGet);
      

      在你的 Js 中,

      var 数量 = 结果.数量; var Price = 结果.Price;

      【讨论】:

        【解决方案3】:

        您可以将具有多个属性的对象作为 JSON 返回。 假设您有一个具有一些属性的基本对象:

        public class Stock{
            public string Quantity { get; set; }
        
            public string Quantity1 { get; set; }
        }
        

        您可以从数据源所在的任何位置获取一些库存,并将数量映射到您的 Stock 对象。为简单起见,我们将只创建一个硬编码的 Stock 对象:

        public JsonResult GetAllQuantities()
        {
           Stock stock = new Stock() {
               Quantity = "2",
               Quantity1 = "3"
           };
           return Json(stock, JsonRequestBehavior.AllowGet);
        }
        

        要查看 Json 是如何发送到客户端的,您始终可以在 ajax 请求的回调中将其打印到控制台。 请务必将您的请求从 post 更改为 get,因为您只是在获取数据。

        【讨论】:

        • 如何在GetQuantity函数中使用库存? @JDupont
        • 通过在控制器文件顶部使用 using 以及其余 using 来引用模型。在 Models 下创建 Stock 对象。
        • 我没有考虑列表,我正在考虑多个字段,例如您的类 Stock 有一个属性 Quantity,假设还有另一个属性 Quantity1。现在我想将这两个字段发送到我的函数中。我像这样检索它 $("#YarnDistribution_quantity ").val(result1), $("#YarnDistribution_quantity 1").val(result2) 。有没有可能
        • 是的。我和凯文的回答都允许你这样做。在您的回调函数中,您会说: $("#YarnDistribution_StockQuantity").val(result.Quantity);和 $("#YarnDistribution_StockQuantity1").val(result.Quantity1);唯一的区别是 Kevin 使用的匿名对象可能更适合您的需求,也可能不适合您的需求。
        • 请查看对我原始答案的修改。让我知道它是否可以解决问题。
        猜你喜欢
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多