Возврат JavaScriptResult в проблему MVC с проверкой модели - PullRequest
1 голос
/ 03 марта 2011

У меня есть тип возврата для метода записи JavaScriptResult. Я хочу сделать проверку модели для этого метода с возвращением new JavaScriptResult(){}. Как я могу это сделать? Например, что я должен вернуть, если существует ошибка на уровне модели.

1 Ответ

1 голос
/ 03 марта 2011

Как правило, я бы старался избегать использования JavaScriptResult, так как он имеет тенденцию смешивать контент пользовательского интерфейса с контентом контроллера, что идет вразрез со всем шаблоном MVC.Если бы я делал то, что вы пытались выполнить, я бы вернул клиенту JsonResult и затем выполнил бы блок кода на основе результата.Таким образом, если модель не проходит проверку, вы можете вернуть JsonResult с результатом ошибки и узнать на клиенте, что проверка не удалась.Это может быть достигнуто следующим образом:

[HttpPost]
public JsonResult Example(ModelName model)
{
    // Validate 
    if (!ModelState.IsValid)
    {
        return new JsonResult()
        {
            Data = new { success = false },
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };
    }

    // No validation errors, do stuff

    return new JsonResult()
    {
        Data = new { success = true },
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };

}

Тогда клиентский код:

$.post('/Example', $('#form').serialize(), function (response) {
    if (response.success) {
        // Success, execute js code here
    } else {
        // Validation errors
    }
}, "json");

Однако, если вам нужно пойти по маршруту JavaScriptResult ивозникает ошибка проверки, я либо ничего не возвращаю, либо какой-нибудь javascript, который уведомит пользователя о том, что проверка не удалась:

[HttpPost]
public JavaScriptResult Example(ModelName model)
{
    // Validate 
    if (!ModelState.IsValid)
    {
        return new JavaScript("alert("Validation Failed!")");
    }

    // No validation errors, do stuff

    return new JavaScript("js to return here if validation passes");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...