【发布时间】:2018-07-11 11:23:04
【问题描述】:
我正在开发用 ASP.Net MVC 开发的 web 应用程序,它有一个应该在其父视图中呈现的部分视图。
- 父视图有一个 HTML Dropdown,on-change 事件应该将各自的数据绑定到局部视图。但在选择更改时,完整的父视图将替换为部分视图(子视图)。
父视图(Index.cshtml)
<h3>Please Select Group</h3>
@using (Html.BeginForm("EmployeeDeptHistory", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
if (ViewBag.DepartmentList != null)
{
@Html.DropDownList("DepartmentName", ViewBag.DepartmentList as SelectList, "-- Select --", new { Class = "form-control", onchange = "this.form.submit();" })
}
}
<div>
@{Html.RenderPartial("_EmployeeDeptHistory");}
</div>
部分视图 (_EmployeeDeptHistory.cshtml)
@model IEnumerable<PartialViewApplSol.Models.EmployeeDepartmentHistory>
@if (Model != null)
{
<h3>Employees Department History : @Model.Count()</h3>
foreach (var item in Model)
{
<div style="border:solid 1px #808080; margin-bottom:2%;">
<div class="row">
<div class="col-md-2">
<strong>Name</strong>
</div>
<div class="col-md-5">
<span>@item.Name</span>
</div>
</div>
<div class="row">
<div class="col-md-2">
<strong>Shift</strong>
</div>
<div class="col-md-5">
<span>@item.Shift</span>
</div>
</div>
<div class="row">
<div class="col-md-2">
<strong>Department</strong>
</div>
<div class="col-md-5">
<span>@item.Department</span>
</div>
</div>
<div class="row">
<div class="col-md-2">
<strong>Group Name</strong>
</div>
<div class="col-md-5">
<span>@item.GroupName</span>
</div>
</div>
<div class="row">
<div class="col-md-2">
<strong>Start Date</strong>
</div>
<div class="col-md-5">
<span>@item.StartDate</span>
</div>
</div>
<div class="row">
<div class="col-md-2">
<strong>End Date</strong>
</div>
<div class="col-md-5">
<span>@item.EndDate</span>
</div>
</div>
</div>
}
}
我认为可能的错误是在更改下拉选择时返回部分视图。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EmployeeDeptHistory(FormCollection form)
{
IEnumerable<EmployeeDepartmentHistory> empHistList;
using (IDbConnection con = new SqlConnection(connectionString))
{
empHistList = con.Query<EmployeeDepartmentHistory>("sp_StoredProc", new { DeptId = form["DepartmentName"] }, commandType: CommandType.StoredProcedure);
}
return View("_EmployeeDeptHistory", empHistList);
}
【问题讨论】:
-
您的方法是返回您的部分视图,而不是主视图!如果您只是想更新现有页面的一部分,则使用 ajax 调用该方法并在其
success回调中更新 DOM -
@StephenMuecke 我只能使用 ajax 在父视图中渲染部分视图。我们还有其他工作吗