为什么局部视图不能在同一页面中渲染? (ASP.NET MVC 4)

时间:2015-04-24 06:46:41

标签: asp.net-mvc

我遇到了部分视图显示的问题。

    //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的原因。每当我点击&#34;学术细节&#34;链接,它执行准确的结果。但不幸的是它没有显示在同一页面中。它将出现在另一页。 (其MVC 4)

我需要更改哪些内容才能在同一页面中呈现局部视图?

3 个答案:

答案 0 :(得分:2)

如果您要重定向到新页面而不是停留在同一页面上,则表示未加载jquery.unobtrusive-ajax.js并且@Ajax.ActionLink()会回退到正常链接。

要么你有

  1. 未包含脚本
  2. 脚本的顺序错误(jquery{version}.js必须来 第一)
  3. 您有重复的脚本

答案 1 :(得分:0)

尝试使用JQuery Ajax将部分视图加载到按钮/链接点击页面上的Div中。

var jsondata = { Id: iddata };

$.ajax({
    url: "/Controllername/GetAcademicInfo",
    method: "POST",
    dataType: "html",
    data: jsondata,
    success: function (response) {
        $("#divId").html(response);

    }

});

请注意,这只是一个示例代码,可以为您提供一个想法。

希望有所帮助!

答案 2 :(得分:0)

也许你可以使用jquery的.load()函数?像这样。

$("divId").load('@url.action("getacademicInfo")', {empId : 4});

https://api.jquery.com/load/