如何将Json数据返回到部分视图

时间:2016-05-20 12:23:59

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

我有一个使用布局页面的索引页面。在索引页面上,我有一个下拉列表和一个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数据,然后绑定检索到的字段  在我加载的局部视图中存在的控件上。这个简单的手段  在我的部分视图中,我有customerfirstname,customerlastname和address的文本框。

         $('#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方法返回一个partialview,但因为我已经 返回json这是不可能的。如何将此json数据返回到部分视图。

1 个答案:

答案 0 :(得分:0)

看一下这个链接 - 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已经足够正确了