Запретить отправку формы, проверять записи с помощью Ajax и, если есть записи, продолжить ASP.NET MVC - PullRequest
0 голосов
/ 09 июня 2011

В настоящее время я слушаю форму, отправляющуюся по одному из моих просмотров, и она проверяет записи.Что я хочу сделать, так это если есть записи, позволяющие форме фактически отображать представление, и если не просто отображать страницу с ошибкой.Очевидно, что «else», где код продолжения должен быть пустым ... Любые идеи о том, как я могу это сделать?

Вот функция JS, которая фактически перехватывает и отправляет сообщения в AJAX.

    $('form#search-form').submit(function (evt) {
        $.ajax({
            type: 'POST',
            url: '<%: Url.Action("Details","SpecialtyTrack") %>',
            data: $(this).serialize(),
            success: function (response) {
                if (response.results == 0) {
                    $('#error').fadeOut('fast');
                    $("#error").fadeIn('slow');
                }
                else {
                    $('#error').hide();

                };

            },
            error: function (response) {
                alert(response);
            }
        });
        evt.preventDefault();

    });

и вот мой код контроллера:

    public ActionResult Details(string searchParameter)
    {

        var sP = this.spRepo.findSpecialtyTrack(searchParameter);
        try
        {
            var record = sP.FirstOrDefault();
            ViewData["directoryID"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.DirectoryID;
            ViewData["directoryName"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.Directory.Name;

            return View(sP);
        }
        catch (NullReferenceException)
        {

            return Json(new {
                results = 0
            });
        }


    }

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Установите Response.StatusCode = 500 в вашем улове, и это вызовет обратный вызов ошибки в вызове jQuery ajax. Затем вы можете обработать ошибку, как хотите, где у вас есть это предупреждение.

public ActionResult Details(string searchParameter)
{

    var sP = this.spRepo.findSpecialtyTrack(searchParameter);
    try
    {
        var record = sP.FirstOrDefault();
        ViewData["directoryID"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.DirectoryID;
        ViewData["directoryName"] = record.DirectoryArtItem.DirectoryCanvass.DirectoryEdition.Directory.Name;

        return View(sP);
    }
    catch (NullReferenceException)
    {
        Response.StatusCode = 500;
        return Json(new {
            results = 0
        });
    }
}
0 голосов
/ 09 июня 2011

я бы решил как 2 действия один как часть проверки / другой как запрос ajax, если он должен быть

<% using Ajax.BeginForm("ValidateAction",new AjaxOptions{ UpdateId="HolderWhereSubmitButtonWillBe"}){
%>

validation page
<%}%>

ответ от вашего действия ValidateAction, возвращенный как частичное представление

<div id="HolderWhereSubmitButtonWillBe">
here will be the ajax call code and button to submit via ajax(all as partail view send as reponse for validation
</div>

Также я бы добавил что-то вроде

if (! Modelstate.isvalid) возвращаемое представление ()

просто чтобы убедиться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...