2014-05-15 137 views
3

在MVC 5页面中,我在表单中嵌入了部分视图。在该页面中,局部视图的HTML定义如下所示:无法更新MVC 5局部视图

<div id="partialview" class="col-md-4"> 
    @Html.Partial("_Sightings", @Model.FieldTripSightingList) 
</div> 

有我的窗体上的一个按钮,当点击时,对于通过Ajax调用这个局部视图加载数据,如下所示:

$('#retrieveSightingsButton').click(function() { 
     var url = "/FieldTrip/GetSightings"; 
     tripName = $("#FieldTripName").val(); 
     userRowId = $("#UserList").val(); 

     $.get(url, { tripName: tripName, userRowId: userRowId }, function (data) { 
        $("#partialView").html(data); 
       }); 
      }); 

C#的控制器方法看起来像这样:

[Authorize] 
public ActionResult GetSightings(string tripName, int userRowId) 
{ 
    var sightingList = this.FieldTripData.GetList(userRowId, tripName).ToList(); 

    return PartialView("_Sightings", sightingList); 
} 

最后,我的局部视图看起来像这样:

@model IEnumerable<WebBirder.Entities.FieldTripSighting> 

    <table id="listingTable" class="table table-bordered table-responsive table-hover table-condensed sortable"> 
     <thead> 
      <tr> 
       <th data-defaultsort="asc">Common Name</th> 
       <th>Sighting Time</th> 
      </tr> 
     </thead> 

     <tbody class="searchable"> 
      @foreach (var item in Model) 
      { 
       <tr> 
        <td> 
         @Html.DisplayFor(modelItem => item.CommonName) 
        </td> 
        <td> 
         @item.SightingDate.ToShortDateString() 
        </td> 
       </tr> 
      } 
     </tbody> 
    </table> 

所有这些都按我的预期工作。问题在于局部视图中的表格从不在页面上更新。当我遍历调试器中的所有内容时,我可以看到部分视图执行的Razor代码以及放置在表中的所有值,但表格数据从不刷新页面。我不确定问题是什么。

+0

你可以发布您的主视图的HTML你的局部视图使用? – mambrow

回答

3

你的问题其实很简单。您的HTML:

<div id="partialview" class="col-md-4"> 

目前JavaScript:

$("#partialView").html(data); 

ID是大小写敏感的;如果你确保他们匹配,你会得到你所追求的结果。

+0

令人难以置信。你钉了它。谢谢。我甚至没有注意到这一点。 –

+0

@RandyMinder它总是让人感动的小事! –

+0

很好,很好。 – Zabavsky

2

尝试移动partialView容器PartialView本身之外:

<div id="partialview" class=" col-md-4"> 
    @Html.Partial("_Sightings", @Model.FieldTripSightingList) 
</div> 

PartialView:

@model IEnumerable<WebBirder.Entities.FieldTripSighting> 
<table id="listingTable" class="table table-bordered table-responsive table-hover table-condensed sortable"> 
    ... 
</table> 

编辑:

尝试在浏览器开发商检查工具对于任何错误和服务器响应,无论您是否获得实际的HTML内容返回给客户端。

另外IE默认缓存ajax获取请求,所以你可能要检查这一点。

+2

我同意。 partialview div需要移出局部视图,因为只要您从ajax替换partialview中的html,就会在该局部视图中加载具有相同ID的另一个div,这会导致问题 – user3036342

+0

谢谢。我已经做出了您建议的更改,并更新了我的原始帖子,以反映它现在的样子。但我仍然没有输出。 –

+0

是的,我正在收回内容。我收回了我期望的一切。 –