具有多个参数的MVC刷新视图

时间:2016-05-31 14:19:46

标签: c# jquery asp.net-mvc partial-views

这是我的问题。我有一个索引页面,它加载了一个包含员工列表及其使用情况的部分视图。在该页面中有一个下拉列表,允许用户过滤以仅查看从下拉列表中选择了主管的人员。这一切都很好,直到我在报告的开始周试了第二次下拉。现在每当我选择下拉列表时,部分视图根本不会加载。我通过控制器和数据加载的所有步骤调试,一切看起来都正确,它只显示一个空表。

查看代码

@{
    ViewBag.Title = "Resource Utilization";
}

<h3>Resource Utilization Totals</h3>

<Section class="form-group">
    <div float:left> @Html.DropDownList("ProjectLeadId", null, "All Resources", htmlAttributes: new { @class = "form-control", style = "width:250px;" })</div>
    <div float:right> @Html.DropDownList("ProjectWeeks", null, htmlAttributes: new { @class = "form-control", style = "width:250px;" })</div>
</Section>


<div id="report">
    @Html.Action("GetList")
</div>

@section scripts{
    <script type="text/javascript">
        $(function () {
            $("#ProjectLeadId, #ProjectWeeks").change(function () {
                $("#report").load("/ResourceUtilizationReport/GetList?LeadId=" + $("#ProjectLeadId").val() + "&StartWeek=" + $("#ProjectWeeks").val());
            });
        });
    </script>
}

控制器代码

 public PartialViewResult GetList(int? LeadId, DateTime? StartWeek)
 {
     var viewModel = new UtilizationViewModel();
     viewModel.Utilization = _utilizationReportImporter.GetUtilization(12, LeadId, StartWeek);
     return PartialView(viewModel);          
 }     

1 个答案:

答案 0 :(得分:0)

你可以在js

中尝试这样的事情
<script type="text/javascript">
    $(function () {
        var data = {
                      "LeadId": $("#ProjectLeadId").val(),
                      "StartWeek": $("#ProjectWeeks").val()
                   }
        $("#ProjectLeadId, #ProjectWeeks").change(function () {
            $("#report").load("/ResourceUtilizationReport/GetList", data);
        });
    });
</script>

确保x.val()来电正在返回预期的内容。使用load方法的第二个参数可确保JQuery创建正确的网址。