Как добавить дополнительные параметры в действие контроллера без изменения входящей модели - PullRequest
1 голос
/ 16 марта 2012

Скажем, у меня есть модель по умолчанию, которая публикуется через AJAX:

var data = {
 // some members...

 newMember: true
}

$.post("/mycontroller/action", data, function() {});

В моем контроллере я не хочу загрязнять существующую модель, поступающую в контроллер. Я хотел бы иметь возможность добавить параметр newMember к действию.

[HttpPost]
public ActionResult AddMember(MemberModel model, bool newMember)
{

}

Вместо того, чтобы менять MemberModel, я бы хотел, чтобы связыватель модели заполнял newMember, но это не работает. Как мне обойти эту проблему?

1 Ответ

1 голос
/ 16 марта 2012

Вместо изменения MemberModel

Это именно то, для чего предназначены модели представлений. Действия вашего контроллера должны получать модели представлений в качестве аргументов и передавать модели представлений в представления.

Но в любом случае, если по какой-то причине вы не используете модели представлений в своем приложении, вы можете отправить запрос JSON:

$.ajax({
    url: '/mycontroller/action',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        newMember: true,
        model: {
            foo: 'bar'
        }
    }),
    success: function(result) {

    }
});

Помните, что это работает в ASP.NET MVC 3. Если вы используете более старую версию, вы можете написать собственную фабрику JsonValueProvider, как описано в этом сообщении в блоге .

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