我遇到了Request.IsAjaxRequest()方法的问题,Firefox似乎是唯一无法正常运行的浏览器。
我有一个PartialView,我使用Ajax.BeginForm()只重新加载页面的那一部分:
@using (Ajax.BeginForm(new AjaxOptions() { UpdateTargetId = "form0", OnSuccess = "$.validator.unobtrusive.parse('form0');" }))
{
<div>
<fieldset>
<h3>
Login
</h3>
<div class="required">
@Html.LabelFor(m => m.Username)
@Html.TextBoxFor(m => m.Username)
@Html.ValidationMessageFor(m => m.Username)
</div>
<div class="required">
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
<input type="submit" value="Login" />
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="checkboxContainer">
@Html.ActionLink("Forgot?", "ForgotPassword")
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
</fieldset>
</div>
}
在控制器中我有代码:
if (Request.IsAjaxRequest())
{
return PartialView("~/Views/Account/_Login.cshtml", model);
}
else
{
return View(model);
}
因为它还需要在没有启用JavaScript的情况下工作。
事情是Firefox第一次返回PartialView并第二次返回View。其他浏览器(Opera,IE,Chrome)工作正常,并始终返回PartialView。