【发布时间】:2015-04-24 06:46:40
【问题描述】:
我遇到了部分视图显示的问题。
//This is Controller Action
//_AcademicInfo is the Partial view name
public PartialViewResult GetAcademicInfo(int empId)
{
var acad = _academicService.GetAcademinByEmp(empId);
return PartialView("_AcademicInfo", acad);
}
<!--Parent/caller page cshtml code-->
@Ajax.ActionLink(
"Academic Details",
"GetAcademicInfo",
"Employee", new {empId = Model.Id},
new AjaxOptions {UpdateTargetId = "AcademicDetails", InsertionMode = InsertionMode.InsertAfter}
)
<!--This is partial view cshtml-->
@model IEnumerable<Hik.PhoneBook.Data.Entities.Academic>
<div id="result">
<table>
<tr>
<th>Degree Name</th>
<th>Passing Year</th>
<th>CGPA</th>
<th>Institute</th>
</tr>
@foreach (var acad in Model)
{
<tr>
<td>@Html.DisplayFor(m => acad.DegreeName)</td>
<td>@Html.DisplayFor(m => acad.PassingYear)</td>
<td>@Html.DisplayFor(m => acad.CGPA)</td>
<td>@Html.DisplayFor(m => acad.Institute)</td>
</tr>
}
</table>
</div>
因为,我需要通过单击链接来获取部分视图,而不是像@Html.Partial("_AcademicInfo", Model.Academic) 那样直接渲染。这就是我使用 Ajax.ActionLink 的原因。每当我单击“学术详细信息”链接时,它都会执行准确的结果。但不幸的是,它没有显示在同一页面中。它会出现在另一个页面中。 (其 MVC 4)
我需要更改哪些内容才能在同一页面中呈现部分视图?
【问题讨论】:
-
那是因为你没有包含相关的脚本 - 你需要包含
jquery.unobtrusive-ajax.js -
是的,我已经使用了 @section scripts { }
-
那么您可能有重复的或其他乱序的脚本(
jquery必须是第一个)。编辑您的问题以在视图中显示所有脚本 -
@sharmoon 您还需要提供更完整的“父”视图示例,或者包含呈现的 HTML。
-
@StephenMuecke 是的,你纠正了。我的“jquery.unobtrusive-ajax.js”是在主 jQuery 加载之前设置的。但我不能将你的答案标记为正确答案,因为除了你的答案之外没有“正确/正确”标志。
标签: asp.net-mvc