2010-12-14 83 views
2

我在動態局部視圖數據在文本框中消失後遇到問題。這是我的場景:MVC動態局部視圖數據在IE7中消失

用戶單擊一個單選按鈕,並且動態加載共同部分視圖。

的Index.aspx(嵌入的JavaScript):

function showCoApplicant() { 
$.ajax({ 
    type: "GET", 
    url: '<%= Url.Action("LoadCoApplicantInfo","Application") %>', 
    data: {}, 
    dataType: "html", 
    async: true, 
    success: function (data) { 
    $("#CoApplicantInfo").html(data); 
    } 
}); } 

ApplicationController.cs:

public ActionResult LoadCoApplicantInfo() { 
Configurator.Models.CreditApplicationModel model = null; 
if (Session["model"] != null) 
    model = (Configurator.Models.CreditApplicationModel)Session["model"]; 

return PartialView("CoApplicant", model); 
} 

CoApplicant.ascx:

<table> 
<tr> 
    <th> 
    <%= Html.LabelFor(model => model.CoApplicant.FirstName)%> 
    </th> 
    <td>  
    <%= Html.TextBoxFor(model => model.CoApplicant.FirstName)%> 
    <%= Html.ValidationMessageFor(model => model.CoApplicant.FirstName)%> 
    </td> 
</tr> 
</table> 

用戶在數據進入,並點擊提交按鈕。該模型然後在控制器中驗證。如果ModelState無效,我會返回視圖以及會話中的模型(我這樣做是因爲我需要將該模型返回到部分視圖,這是我可以將數據返回給它的唯一方法)。在Javascript中的httppost上,我確定是否應該顯示共同部分視圖,如果是,則通過調用showCoApplicant()再次加載它。

[HttpPost] 
public ActionResult Index(Configurator.Models.CreditApplicationModel model) 
{ 
if (!ModelState.IsValid) 
{ 
    Session["model"] = model; 
     return View(); 
} 
} 

這是我遇到問題的地方。 IE7中缺少共享程序的數據。它在IE,Chrome和Firefox的其他版本中工作正常。爲什麼在IE7中缺少數據?我怎樣才能讓它顯示?

回答

1

在你的Ajax調用,嘗試設置緩存爲false:

很可能
function showCoApplicant() { 
    $.ajax({ 
    type: "GET", 
    cache: false, 
    url: '<%= Url.Action("LoadCoApplicantInfo","Application") %>', 
    data: {}, 
    dataType: "html", 
    async: true, 
    success: function (data) { 
    $("#CoApplicantInfo").html(data); 
    } 
    }); } 
+1

這個伎倆!謝謝!! – Trisney 2010-12-14 21:41:13

0

得越多,就產生了一些愚蠢的HTML。因爲您使用的是ajax,所以您不能僅僅依靠w3c驗證程序運行它來查找,但也許您可以想出一種方法將生成的數據發佈到視圖中,而無需使用ajax,因此您可以查看它或驗證它。