如何在视图首次加载时进行局部视图加载?

时间:2016-05-18 05:05:10

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

我终于学会了如何在BeginForm块中提交选择选项时使用Ajax.BeginForm来刷新表。

当我点击"提交"部分视图每次都按预期加载,以便拨打功能。

我无法找到的是如何使用“索引操作”中的默认值告诉Controller在View首次加载时加载“局部视图”。 (部分视图支持索引操作)。

这是我可以从Controller做的事情还是需要jQuery?

为了提供更多上下文,以下代码是当前有效的 - 也就是说,部分视图仅在提交表单时加载,但在第一次View加载时不显示。

查看:

@model ViewModelTest.ViewModels.StudentBehaviorDetailBySemesterViewModel

// ... code ...

@using (Ajax.BeginForm(actionName: "PartialTable",
    controllerName: "StudentBehaviorDetailBySemester",
    ajaxOptions: new AjaxOptions { UpdateTargetId = "TableData" }))
{
    <div>
        <p>Campus: @Html.DropDownListFor(c => c.SelectedCampus, Model.CampusList)</p>
        <p>FY: @Html.DropDownListFor(c => c.SelectedFy, Model.FyList)</p>
        <input type="submit" value="submit" />
    </div>
}

<div id="TableData">
    @{Html.Action("PartialTable", "StudentBehaviorDetailBySemester"
          , new { vm = Model });}
</div>


@section scripts
{
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
}

控制器 - 索引和部分视图

[HttpGet]
public ActionResult Index(string SelectedCampus="MRA", string SelectedFy="FY16")
{
    StudentBehaviorDetailBySemesterViewModel vm 
      = new StudentBehaviorDetailBySemesterViewModel();    
    vm.SelectedCampus = SelectedCampus;
    vm.SelectedFy = SelectedFy;

    vm.CampusList = new SelectList(Repositories.SelectLists.CampusList());
    vm.FyList = new SelectList(Repositories.SelectLists.FiscalYearList());
    return View(vm);
}


public ActionResult PartialTable(StudentBehaviorDetailBySemesterViewModel vm)
{
    using (TestAccountContext db = new TestAccountContext())
    {
        var query = db.StudentBehaviorDetailBySemesters
            .Where(m => m.Campus == vm.SelectedCampus)
            .Where(m => m.Fy == vm.SelectedFy).ToList();
        vm.BehaviorDetail = query;
    }

    return PartialView("PartialTable", vm);
}

2 个答案:

答案 0 :(得分:2)

如果要渲染局部视图,则更新部分视图语法...

@{Html.RenderAction("PartialTable", "ControllerName", new { vm = Model });}

答案 1 :(得分:1)

而不是

@{Html.Action("PartialTable", "StudentBehaviorDetailBySemester", new { vm = Model });}

您需要使用:

@{Html.RenderAction("PartialTable", "StudentBehaviorDetailBySemester", new { vm = Model });}