Данные динамического частичного просмотра MVC исчезают в IE7 - PullRequest
2 голосов
/ 14 декабря 2010

У меня проблемы с динамическим частичным просмотром данных, исчезающих из текстового поля после httppost. Вот мой сценарий:

Пользователь нажимает кнопку-переключатель, и частичное представление соискателя загружается динамически.

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 я определяю, должно ли отображаться частичное представление соискателя, и если да, я загружаю его снова, вызывая showCoApplicant ().

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

Вот где у меня проблема. Данные для соискателя отсутствуют в IE7. Он отлично работает в других версиях IE, Chrome и Firefox. Почему в IE7 отсутствуют данные? Как я могу заставить это показать?

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

В вашем 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);
   }
  }); }
0 голосов
/ 15 декабря 2010

Скорее всего, у вас получился какой-то бестолковый HTML. Поскольку вы используете ajax, вы не можете просто запустить его с помощью валидатора w3c, чтобы выяснить это, но, возможно, вы можете найти способ опубликовать сгенерированные данные в представлении без ajax, чтобы вы могли его просмотреть или проверить.

...