使用Ajax返回部分视图和模型

时间:2014-12-12 12:13:32

标签: jquery asp.net-mvc

所以我想要的很简单: 我想通过ajax显示部分View中的数据。在我的部分视图中,我使用模型,用数据填充表格。

我的Ajax

var serviceURL = '/Vm/GetVMInformation';

$.ajax({
    url: serviceURL,
    contentType: 'application/html; charset=utf-8',
    type: 'GET',
    dataType: 'html',
    success: function (result) {
        alert("Success");
        $("#testDiv8").html(result);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});

我的控制器操作

public ActionResult GetVMInformation()
{
    ... Code that fills my VmList with data ...
    return View("~/Views/Shared/_List.cshtml", VmList);
}

我的部分视图

@model IsolutionsAzureManager.Models.VmData

<table class='table' id='vmTable' border='1'>
    <tr>
        <th>VM Name</th>
        <th>Status</th>
        <th>Shutdown Time</th>
        <th>Service Name</th>
        <th>Created Date</th>
        <th>Last Modified</th>
        <th>Port</th>
    </tr>

    @for (int i = 0; i < @ViewData["SizeOfList"]; i++)
    {
        <tr class="tableColumn vmColumn">

            <td class="vmName">@Model.Name[i]</td>
            <td class="vmStatus">@Model.Status[i]</td>
            <td class="vmShutDown">@Model.Name[i]</td>
            <td class="vmServiceName">@Model.Name[i]</td>
            <td class="vmCreatedDate">@Model.Name[i]</td>
            <td class="vmLastModified">@Model.Name[i]</td>
            <td class="vmPort">@Model.Name[i]</td>
        </tr>
    }
</table>

所以这一切似乎都很清楚。我的问题是:Ajax只期望html作为返回值。所以我得到了一个内部服务器&#34;错误。 我已经看到它很容易与ViewBag一起使用。但我认为这不是解决这个问题的最佳方法。 那么如何将我的模型中的数据添加到我的PartialView中,然后在我的主视图中显示它(我的Ajax所在的位置)

谢谢

0 个答案:

没有答案