在我看来,当我从下拉菜单中选择他/她的名字时,我想插入一个详细说明用户设备的HTML表格。我想在不重新加载页面的情况下这样做,所以我正在寻找一个AJAX解决方案。我目前的解决方案工作正常,但我认为必须有更好的解决方案。
我正在使用这样的jQuery(目前只使用<p>
标签,如果我尝试在那里编写HTML表格,会变得非常混乱):
$.getJSON(url, { networkName: $('#Incident_Caller_DomainUserID option:selected').text() }, function (data) {
$('#EquipmentList').empty();
$.each(data, function (index, optionData) {
$('#EquipmentList').append('<p>' + optionData.Product + '</p>');
});
});
对AjaxData Controller中的GetCallerEquipment Action发出POST请求
public JsonResult GetCallerEquipment(string networkName)
{
JsonResult result = new JsonResult();
result.Data = repository.GetCallerEquipment(networkName);
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result;
}
我可以使用局部视图吗?这似乎是最好的方法,但我不知道从哪里开始,所以一些建议或链接到示例或教程将非常感激。
感谢。
答案 0 :(得分:2)
部分视图会很棒。
让控制器返回一个,然后执行以下操作:
$.get('@Url.Action("YourActionName", "YourControllerName")',
{ anydata: youmaywanttopass },
function(result) {
$("#EquipmentList").html(result);
}
);
就是这样。 get-request返回的“result”将是您的部分视图html。
答案 1 :(得分:1)
我可以使用局部视图吗?
不确定
public ActionResult GetCallerEquipment(string networkName)
{
var model = repository.GetCallerEquipment(networkName);
return PartialView(model);
}
然后在GetCallerEquipment.cshtml
部分内:
@model SomeViewModel
<table>
...
</table>
然后:
var networkName = $('#Incident_Caller_DomainUserID option:selected').text();
$('#someContainer').load(url, { networkName: networkName });