2016-11-10 176 views
0

我一直在研究并尝试多次失败的尝试,让我的部分视图在我的主视图中使用Ajax.actionlink显示。当使用开发人员工具并查看网络选项卡时,我确实看到了请求。点击预览时,我可以在部分视图中看到正确的数据。没有jQuery错误。.NET MVC Ajax.ActionLink不返回部分视图

查看

@model IEnumerable<NS.Models.FeeAuth> 

@using (Html.BeginForm()) 
{ 
<p> 
    <span class="glyphicon glyphicon-search"></span> Find by Last Name: @Html.TextBox("SearchString") 
    <input type="submit" value="Search" /> 
</p> 
} 

<div class="table-responsive"> 
    <table class="table table-condensed" style="border-collapse:collapse;"> 
     <tr> 
      <th> 
       @Html.LabelFor(m => m.First().ID) 
      </th> 
      <th> 

       @Html.ActionLink("Request ID", "ApprovalIndex", new { sortOrder = ViewBag.RequestIDSortParam }) 
      </th> 
      <th> 
       @Html.Label("emplid", "Student Emplid") 
      </th> 

     </tr> 
     @{int i = 0;} 
     @foreach (var item in Model) 
     { 

      <tr data-toggle="collapse" data-parent="#[email protected]" data-target="#[email protected]" class="accordion-toggle"> 
       <td> 

        @Ajax.ActionLink(Html.Encode(item.ID), 
      "SelectedSTRMS", 
      "FeeAuth", 
      new { id = item.ID, requestId = item.requestID }, 
new AjaxOptions 
{ 
    HttpMethod = "GET", 
    UpdateTargetId = "SelectedSTRMList" + i, 
    InsertionMode = InsertionMode.Replace 

}) 

      </td> 

       <td> 
        @Html.DisplayFor(modelItem => item.requestID) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.emplid) 
       </td> 
      </tr> 
      <tr> 
       <td colspan="6" class="hiddenRow"> 
        <div class="accordion-body collapse" id="[email protected]"> 
         <div id="[email protected]"> 

         </div> 
        </div> 
       </td> 

      </tr> 
      i++; 
     } 
    </table> 
</div> 

管窥

<table> 

<tr> 
    <td> 
     <ul> 

       @foreach (var s in (List<string>)ViewBag.SemesterInfo) 
       { 
        <li style="padding-bottom:20px;">@s</li> 
       } 

     </ul> 

    </td> 
</tr>    

</table>  

的Jquery在_Layout.cshtml

<script src="~/Scripts/jquery-2.1.3.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery-migrate-1.2.1.min.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 

控制器

[HttpGet] 
    public PartialViewResult SelectedSTRMS(int id, int requestId) 
    { 

     FeeAuthWithCommentsViewModel feeauth = new FeeAuthWithCommentsViewModel(); 
     feeauth.FeeAuth = db.FeeAuths.Find(id); 

     int feeauthID = id; 
     List<string> GetSTRM = new List<string>(); 

     GetSTRM = db.vw_GetSTRMs.Where(v => v.FeeAuthID == feeauthID).Select(v => v.DESCR).ToList(); 

     if (GetSTRM.Count > 0) 
     { 
      ViewBag.SemesterInfo = GetSTRM.ToList(); 
     } 
     else 
     { 

      ViewBag.SemesterInfo = new List<string> { "No STRM Selected" }; 
     } 

     return PartialView("_SelectedSTRMS"); 
    } 

回答

0

你的更新目标是:

UpdateTargetId = "SelectedSTRMList" + i, 

但你的div id为:

<div id="[email protected]"> 

换句话说,你要么缺少更新对象的_字符串或您需要删除您的div id中的_

+0

哇。谢谢。我没有明白。我浪费了这些日子。我将我的UpdateTargetId更改为“SelectedSTRMList_”+ i – user2448412