2011-04-07 33 views
1

我有2个问题,在第一个,我得到一个列表,我想如果在C#代码(控制器)中的excetpion有可能对一个视图(错误视图)并显示一个特定的div。如何在.error中获取视图。 ? HTMLASP.NET MVC中使用jQuery的异常管理

<div><a href="#" class="MnuCustomerList">List</a></div> 

jQuery的

$(".MnuCustomerList").click(function() { 
    var jqxhr = $.post("/Customer/List", function (data) { 
     $('#rightcolumn').html(data); 
    }) 
    .success(function() { alert("success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }); 
}) 

;

控制器:

public PartialViewResult List() 
{ 
    throw new Exception("myexception"); 
    return PartialView("List"); 
} 

第二个问题: 我有一个表格

@model MyModel 
@using (Html.BeginForm("Save", "Customer", FormMethod.Post)) 
{ 
    <table style="width:100%;"> 
    <tr> 
     <td>Code</td> 
     <td>@Html.TextBoxFor(m => m.Customer.Code, new { id = "tbCode" })</td> 
    </tr> 
    <tr> 
     <td>LastName</td> 
     <td>@Html.TextBoxFor(m => m.Customer.LastName, new { id = "tb", maxlength = 50, style = "width:40%;" })</td> 
    </tr> 
    <tr> 
     <td colspan="2"><input type="submit" value="A submit button"/></td> 
    </tr> 
    </table> 
} 

在Controller中,我检查,如果代码已经存在,如果是CustomerException( “代码存在”)。

我的问题,是有可能使用jQuery,但仍然使用这种格式的意思是与模型,并通过一个价值像下面

$.ajax({ 
    type: "POST", 
    url: "/Customer/Save", 
    data: { 
     id: $('#Id').val(), 
     firstName: $('#FirstName').val(), 
     lastName: $('#LastName').val(), 
     isEnable: $('#IsEnable').attr('checked')   
    }, 
    success: function (html) { 
     $("#ContentDataSection").html(html); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { } 
}); 

由于样品没有得到一个值后这种形式,

回答

6

只有在发出ajax请求时出现错误,才会触发错误回调。如果服务器端发生错误,则需要将数据传回客户端(使用Json格式是个不错的选择),指出服务器端存在故障并在成功回调中处理它。

编辑添加代码展示了如何响应代码设置为500,因此它可以在错误调用每莱恩的评论后面进行处理:

控制器动作:

public ActionResult FiveHundred() 
{ 
    Response.StatusCode = 500; 
    return Json(new {Error = "Uh oh!"}); 
} 

的Javascript:

$.ajax({ 
    url: "/home/fivehundred", 
    type: "POST", 
    success: function(data) { 
     // handle normally 
    }, 
    error: function(data) { 
     alert("error " + data.Error); 
    } 
}); 
+0

当我发布我的表单时,我检查是否存在代码,存在我想要:1.显示消息客户端2.停止发布此第二点是否有可能? – 2011-04-07 20:09:02

+0

您可以将状态码始终设置为500(或任何其他错误代码)以触发错误回调来处理json响应。 – Ryan 2011-04-07 20:10:31

+0

@瑞安你有样品如何实现这个? – 2011-04-07 20:18:53