通过AJAX动态地将HTML插入View

时间:2012-01-24 12:46:08

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

在我看来,当我从下拉菜单中选择他/她的名字时,我想插入一个详细说明用户设备的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;
}

我可以使用局部视图吗?这似乎是最好的方法,但我不知道从哪里开始,所以一些建议或链接到示例或教程将非常感激。

感谢。

2 个答案:

答案 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 });