Можно ли передать универсальную модель в действие JsonResult из вызова ajax? - PullRequest
0 голосов
/ 25 августа 2011

Я создаю функцию javascript, которая будет вызывать ajax-вызов для проверки модели формы.

function ValidateModel(formID) {
    $.ajax({
        url: '/Custom/ValidateModel',
        type: 'POST',
        data: $('#' + formID).serialize(),
        dataType: 'json',
        processData: false,
        success: function (data) {

        // code remove for brevity  

        }
    });
}

Это будет обработано этим действием в CustomController

[HttpPost]
    public ActionResult ValidateModel(CustomModel model)
    {          
            if (!ModelState.IsValid)
            {
                 // code remove for brevity
            }
            return Json(customObject, JsonRequestBehavior.DenyGet);

    }

Если я передам форму с объектом CustomModel, автоматическое связывание работает просто отлично. Я хочу создать общий обработчик на сервере для проверки модели. Я хочу добиться этого примерно так:

public ActionResult ValidateModel(GenericModel model)
{

}

чтобы я мог передавать на сервер разные формы с разными типами моделей.

спасибо!

1 Ответ

1 голос
/ 03 ноября 2011

Не могли бы вы использовать интерфейс, который реализован во всех ваших моделях, и иметь

public ActionResult ValidateModel(IViewModel model)
{

}

Вы могли бы передать любую модель, которая реализует интерфейс IViewModel.

Или, может быть, вы могли бы использовать абстрактный базовый класс?

...