Управление исключениями в ASP.NET MVC с использованием jquery - PullRequest
1 голос
/ 07 апреля 2011

У меня есть 2 вопроса, в первом я получаю список, я хотел бы, чтобы exctpion в коде C # (контроллер) имел возможность просмотра (представление ошибок) и отображения его конкретного div.Как я могу получить представление в .error.?HTML

<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>
}

В Контроллере я проверяю, существует ли код уже, если да 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) { }
});

Спасибо,

1 Ответ

6 голосов
/ 07 апреля 2011

Ошибка обратного вызова сработает только в случае ошибки при выполнении запроса 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);
    }
});
...