【发布时间】: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 < 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