在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中缺少数据?我怎样才能让它显示出来?
答案 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,以便您可以查看或验证它。