2013-04-24 63 views
1

我有一个局部视图,需要在Ajax调用后完全刷新。当我这样做时,其中的一部分不是全部。当我通过它来查看被捕获的内容时,看起来只是部分视图中的表单正在刷新,而不是其他部分。有什么可能导致这种情况?部分视图在Ajax调用后未完全重新渲染

的jQuery和Ajax是刷新包含其他局部视图的视图和视图:

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() { 
    $('#ChangeHeatName').click(function (e) { 
     var tdata = $('#form1').serialize(); 
     var origname = $('#HeatNameDiv').find('input[name="heatName"]').first().val(); 
     var newname = $('#HeatNameDiv').find('input[name="updatedHeat"]').first().val(); 
     $.ajax({ 
      type: "POST", 
      data: { 
       mCollection: tdata, 
       heatName: origname, 
       updatedHeat: newname 
      }, 
      url: '@Url.Action("ChangeHeatName","Home")', 
      //url: "/Home/ChangeHeatName", 
      success: function (result) { success(result); } 
     }); 
    }); 


    function success(result) { 

     $('#HeatNameDiv').dialog('close'); 
     //Ajax with problem 
     $.ajax({ 
      type: "GET", 
      url: '@Url.Action("ButtonsPartial","Home")', 
      success: function (result2) { $("#ButtonsPartial").html(result2); } 
     }); 
     $("#Partial_Chem_Analysis").html(result); 
    } 
}); 
</script> 

<section> 
<div id ="ButtonsPartial" title="ButtonsPartial"> 
    @Html.Action("ButtonsPartial", "Home") 
</div> 
<div id="Partial_Chem_Analysis" title="Partial_Chem_Analysis"> 
    @Html.Action("PartialChemAnalysis", "Home", Model) 
</div> 
</section> 
<section> 

局部视图:

@using System.Data; 
@using System.Dynamic; 
@using System.Collections.Generic; 
@using System.Linq; 
@model TheManhattanProject.Models.ButtonsModel 


<div id="Chem_Buttons"> 
<h2 class="alignleft">Chemistry Table</h2> 
<p class="alignright">Heat Name<input type="text" name="heat_name" value="@Model.heatName" class="search-query" placeholder="Search" style ="width:100px" readonly="true"/> 
<button class="btn btn-success" id="Change_Heat_Name" value="Change_Heat_Name" name="action:Change_Heat_Name" type="button"> Change Heat Name</button> 
Grade<input type="text" name="heat_grade" value="@Model.grade" class="search-query" placeholder="Search" style="width:100px" readonly="true"/> 
<button class="btn btn-success" id="ChangeHeatGrade" value="ChangeHeatGrade" name="action:Change_Grade" type="button">Change Grade</button> 
Delete Record<input type="text" name="delete_record" value="@Model.heatName" class="search-query" placeholder="Search" style ="width:100px" readonly="true"/> 
<button class="btn btn-success" id="DeleteRecord" value="DeleteRecord" name="action:Delete_Record" type="button">Delete Record</button> 
    </p> 
    <div style="clear: both;"></div> 
    </div> 
<div id="HeatNameDiv" title="Change Heat Name"> 
    @using (Html.BeginForm("ChangeHeatName", "Home", "POST")) 
    { 
    <section> 
     Heat Name:<input type="text" name="heatName" value="@Model.heatName" style ="width:100px" readonly="true"/> 
     //Value staying to what was entered not "" 
     Change to:<input type="text" name="updatedHeat" value="" style="width: 100px" /> 
     <input type="button" id="ChangeHeatName" name="ChangeHeatName" value="Change" /> 
    </section> 
} 
</div> 

<div id="HeatGradeDiv" title="Change Heat Grade"> 
@using (Html.BeginForm("ChangeGrade", "Home", "POST")) 
{ 
    <section> 
     Heat Grade:<input type="text" name="grade" value="@Model.grade" style ="width:100px" readonly="true"/> 
     Change to:<input type="text" name="updatedGrade" value="" style="width: 100px" /> 
     <input type ="hidden" name="hiddenHeat" value ="@Model.heatName)" /> 
     <input type="button" id="ChangeGrade" name="ChangeGrade" value="Change" /> 
    </section> 
} 
</div> 

<div id="DeleteRecordDiv" title="Delete Record"> 
@using (Html.BeginForm("DeleteRecord", "Home", "POST")) 
{ 
<section> 
    Heat Name:<input type="text" name="heatName" value="@Model.heatName" style ="width:100px" readonly="true"/> 
    <input type="button" id="DeleteRecordBtn" name="DeleteRecordBtn" value="Delete" /> 
</section> 
} 
</div> 
+0

我看到两个AJAX调用。哪一个给你带来问题? – Jasen 2013-04-24 17:49:50

+0

对不起,应该有具体说明。这是第二个。我会在我的代码中添加一个标记。 – 2013-04-24 17:53:37

+0

在这里找到了答案:http://stackoverflow.com/questions/11528196/caching-issue-with-loading-partial-views-into-jquery-dialogs – 2013-04-24 20:59:26

回答

0

你没有Partial_Chem_Analysis标签

+0

它包含在另一个与问题无关的视图中。 – 2013-04-24 17:54:17

+0

@Danger_Fox其实,这是,我在想自己。 – Jasen 2013-04-24 17:57:33

+0

@Jasen认为刷新很好,并做它应该的。我将使用该代码更新我的问题,以便您可以看到。另外,我更新了这个问题,因为我标记了没有更新错误的部分 – 2013-04-24 17:59:16

1

从我的理解在你编辑之后,这段代码的回应给你带来了问题。

$.ajax({ 
    type: "GET", 
    url: '@Url.Action("ButtonsPartial","Home")', 
    success: function (result2) { $("#ButtonsPartial").html(result2); } 
}); 

跟这个有几件事情是

  1. 你不显示容器ButtonsPartial ID。所以如果它不存在,你不能显示结果。
  2. 它使用GET,可以通过浏览器进行缓存。使用像firebug或开发人员工具的浏览器调试程序,您可以看到对ajax调用的响应,并查看它是否真的从您的服务器获取新数据。

编辑:我现在看到您的ButtonsPartial div。所以#1不是问题。

+0

我检查了它作为响应返回的内容,这正是部分视图中的内容。我可以看到的主要问题是“更改为:”字段中的内容未被重置。但是,当我看到响应设置为“”时,它应该是这样,它只是不反映在页面上。如果那有意义的话。 – 2013-04-24 18:21:55

+0

你回复的HTTP响应代码是什么? – Jasen 2013-04-24 18:33:22

+0

当我查看萤火虫中的响应时,它是ButtonsPartial视图的HTML,因为它应该呈现。 – 2013-04-24 18:45:10