我终于学会了如何在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);
}
答案 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 });}