c# - 如何在 View 首次加载时加载部分 View ?

标签 c# jquery ajax asp.net-mvc

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

当我单击“提交”时,每次都会按预期加载部分 View ,以便拨入该功能。

我一直没能找到的是我如何告诉 Controller 在 View 首次加载时加载部分 View ,使用索引操作中的默认值。 (分部 View 支持索引操作)。

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

为了提供更多上下文,以下代码是目前有效的代码——也就是说,部分 View 仅在提交表单时加载,但不会在第一次加载 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>
}

Controller ——索引和局部 View

[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);
}

最佳答案

如果你想渲染一个局部 View ,你必须更新你的局部 View 语法...

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

关于c# - 如何在 View 首次加载时加载部分 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290705/

相关文章:

javascript - 使用 jQuery 允许按钮点击提交

javascript - 如何通过 AngularJs $http 将二进制文件放入 API

C# 与 Selenium Ajax DropdownList 问题

c# - 即使将身份验证模式设置为 'Windows',ASP.Net MVC4 User.Identity.Name 也会变空

c# - 等于、GetHashCode、EqualityComparers 和模糊相等

javascript - 为游戏添加新词

ajax - html header中的token怎么写,怎么用?

c# - C# 中的电子邮件通知系统

c# - 如何避免在多个文件中有条件地使用相同的命名空间

javascript - 修改(粗体)某个单词之前的所有单词