MVC动态局部视图数据在IE7中消失

时间:2010-12-14 20:47:06

标签: jquery asp.net-mvc model cross-browser partial-views

在httppost之后,我遇到动态部分视图数据从文本框中消失的问题。这是我的情景:

用户单击单选按钮,动态加载coapplicant局部视图。

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无效,我会在会话中返回视图和模型(我这样做是因为我需要将该模型返回到局部视图。这是我可以将数据恢复到它的唯一方法。)。在httppost上,在Javascript中,我确定是否应该显示coapplicant局部视图,如果是,我通过调用showCoApplicant()再次加载它。

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

这就是我遇到问题的地方。 IE7中缺少共同申请人的数据。它在IE,Chrome和Firefox的其他版本中运行良好。为什么IE7中缺少数据?我怎样才能让它显示出来?

2 个答案:

答案 0 :(得分:1)

在你的ajax调用中,尝试将cache设置为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 :(得分:0)

很可能,您生成了一些愚蠢的HTML。因为您正在使用ajax,所以不能仅仅针对w3c验证器运行它来查找,但也许您可以找到一种方法在视图中发布生成的数据而不使用ajax,以便您可以查看或验证它。