【问题标题】:How to return Json data to a partial view如何将 Json 数据返回到部分视图
【发布时间】:2016-05-20 12:23:59
【问题描述】:

我有一个使用布局页面的索引页面。在索引页面上,我有一个下拉列表和一个 div 部分 用于托管部分视图。我这样做是因为我计划有大约 4 个链接和 4 个链接 将加载不同的局部视图。

         <div class="selectOption1" id="custNum">
               <label for="ddlCustomerNumber">Customer #:</label>
               <select id="ddlCustomerNumber" name="ddlCustomerNumber">
                 <option value="1001">1001</option>
                 <option value="1002">1002</option>
                 <option value="1003">1003</option>
                 <option value="1004">1004</option>    
               </select>
        </div>


        <div id="pageContent"></div>

在 html 的脚本部分,我正在进行 Ajax 调用 这将获取 jason 数据,然后绑定检索到的字段 在我加载的局部视图中存在的控件上。这个简单的意思 在我的部分视图中,我有客户名字、客户姓氏和地址的文本框。

         $('#ddlCustomerNumber').change(function () {         
                $.ajax({
                    url: '@Url.Action("PopulateTextBoxes", "Home")',
                    type: "GET",
                    data: {
                        "customerNumber": $(this).val(),
                        "Country": $("#divcountry").text().trim()
                    },
                    success: function (data) {
                        if (data != null) {
                            for (var x = 0; x < data.length; x++) {
                                $("#Customerfirstname").val(data[x].customerfirstname);
                                $("#Customerlastname").val(data[x].Customerlastname);
                                $("#Address").val(data[x].Address);                        
                            }
                        }
                    }
                });

            });

这是获取我计划绑定到控件的 json 数据的方法 在我看来。

              public ActionResult PopulateTextBoxes(Int32 customerId, string country)
                {
                    try
                    {
                        var relatedCustomerInfo = GetOtherCustomerInfo(customerId, country, sRadSelection);
                        return Json(relatedCustomerInfo, JsonRequestBehavior.AllowGet);
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex);
                        return View("Error");
                    }

                }

问题:我知道我可以从 PopulateTextBoxes 方法返回部分视图,但因为我已经 返回 json 这是不可能的。如何将此 json 数据返回到我的局部视图。

【问题讨论】:

  • relatedCustomerInfo 一个集合。您的for (var x = 0; x &lt; data.length; x++) 建议是这样,但是您反复更新和覆盖元素值-这有什么意义? (或者您是否有包含多个元素的无效 html 以及 id="Customerfirstname" 等)?
  • 其实这是个错误。它不是一个集合。它应该只返回一条记录。循环不是必需的。你是对的
  • 不清楚你想做什么。为什么需要同时返回json和html?
  • 不强制返回json。我只是希望能够将数据返回到我的局部视图。我认为推荐使用 json。它被用作示例。
  • 进行 ajax 调用。设置relatedCustomerInfo 并将其作为模型返回到局部视图 - return PartialView("~/views/ABC/XXX.cshtml", relatedCustomerInfo);.然后在您的成功部分ajax 调用只是将返回的 html 绑定到控件之一

标签: jquery ajax asp.net-mvc-4 c#-4.0


【解决方案1】:

看看这个链接 - How to load partial views in MVC using AJAX

这是另一个例子:

Java 脚本:

$.get( '@Url.Action("PopulateTextBoxes","Home", new { customerId = Model.ID } )', function(data) {
    $('#outputContainer').html(data);
}); 

控制器:

public ActionResult PopulateTextBoxes(Int32 customerId, string country)
{
    try
    {
        var relatedCustomerInfo = GetOtherCustomerInfo(customerId, country, sRadSelection);
        return PartialView("~/Views/Home/_Partial.cshtml",relatedCustomerInfo);
    }
    catch (Exception ex)
    {
        logger.Error(ex);
        return View("Error");
    }
}

可能需要稍微调整一下才能让它完全按照你想要的方式工作,但看起来你对 MVC 的了解已经足够好了

【讨论】:

  • 好的,谢谢。在我自己的情况下,因为我有这个
    ,它将是 $('#pageContent').html(data)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多