2010-12-14 81 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,因此您可以查看它或验证它。