【发布时间】:2011-06-23 15:06:22
【问题描述】:
我正在努力解决这个问题。在我的本地机器(Win7/VS2010/IIS 7.5)和另一台相同的开发者机器上,以下代码返回 500 状态码,并且响应文本显示“无法找到具有指定电子邮件地址的用户”。
当我将站点部署到我的测试服务器 (Win2008 R2/IIS7.5) 时,它会返回正确的状态代码,但内容类型设置为“text/html”并且 responseText 不包含消息。
我已尝试关闭服务器上的自定义错误,但没有任何区别。谁能发现问题出在哪里?
我有一个使用 AjaxHelper.BeginForm 方法配置的表单:
@using (Ajax.BeginForm("FindUser", new AjaxOptions {OnSuccess="findComplete", OnFailure="findFailed"})
{
<fieldset>
@Html.EditorFor(m => m.UserEmail)
<div class="form-item button search">
<input type="submit" value="Find"/>
</div>
<div id="find-err" class="message error hidden">
<div class="contents"></div>
</div>
</fieldset>
}
带有错误处理javascript函数:
function findFailed(result) {
var error = result.responseText;
if (error) {
$('#find-err .contents').text(error).slideDown();
}
}
控制器动作捕捉到任何错误并返回一条消息:
[HttpPost]
public ActionResult FindUser(FindUserModel model)
{
try
{
// code to find user
if (user == null)
{
throw new Exception("Could not locate user with specified email address.");
}
if (Request.IsAjaxRequest())
{
return Json(new { id = user.Id, name = user.Name }, JsonRequestBehavior.AllowGet);
}
model.FoundUser = user;
return View("Details", model);
}
catch (Exception ex)
{
if (Request.IsAjaxRequest())
{
Response.StatusCode = 500;
return Json(ex.Message, JsonRequestBehavior.AllowGet);
}
ModelState.AddModelError("UserEmail", ex.Message);
return View(model);
}
}
任何帮助将不胜感激:)
【问题讨论】:
标签: json asp.net-mvc-3 jquery error-handling