MVC3: Как опубликовать форму, которая содержит частичные представления? - PullRequest
2 голосов
/ 12 апреля 2011

Инструменты: MVC3, ненавязчивая проверка jQuery, Razor, VS 2010

Я занимаюсь разработкой проекта MVC2, который позволяет пользователям запрашивать услуги.Я поместил информацию, общую для всех форм, в частичные представления, которые строго типизированы для их собственных моделей.Каждое частичное представление имеет свой собственный контроллер.Частичные представления отображаются на главной странице контейнера.У меня есть ненавязчивая проверка данных jQuery, работающая со всеми данными на отображаемой странице.

Вопросы: Каков наилучший способ кодирования сообщения, которое передает все данные страницы на сервер, и как я могу связать частичные представления сих соответствующие модели?Могут ли контроллеры для частичных представлений обрабатывать свои собственные обязанности по хранению данных?Где-нибудь есть хорошие примеры?Или эта архитектура ошибочна, и я должен переосмыслить?

Заранее спасибо,

Арнольд

1 Ответ

1 голос
/ 13 апреля 2011

Нет, совсем нет, звучит красиво, разбито и легко тестируется. Прежде всего, убедитесь, что формы правильно настроены с правильным действием, методом и т. Д. В HTML. Итак, чтобы опубликовать всю страницу, вы можете сделать что-то вроде этого:

var savePage = function () {
    $('form').each(function (formIndex, formElement) {
        var f = $(formElement);
        $.post(f.attr('action'), f.serialize(), successfulFormPost);
    });
};

var successfulFormPost = function (data) { ... };

Теперь, если ваш MVC-вид выглядит примерно так:

(обратите внимание на соглашение об именах для атрибута name). Затем вы можете заставить свой контроллер для этой формы принимать строго типизированный параметр, который соответствует @Model представления:

public class SomeModel {
    public int Id { get; set; }
    public string Description { get; set; }
}

public class SomeController : Controller {
    [HttpPost]
    public ActionResult SomeAction(SomeModel someModel) {
        // use someModel.Id, someModel.Description here
    }
}

Я сделал этот HTML немного больше вручную, но я просто доказываю, как связывать и связывать HTML POST с действиями контроллера. Я оставлю на ваше усмотрение привлечение ненавязчивой проверки с использованием синтаксиса типа Html.TextBox. Просто не забудьте установить атрибут имени ваших полей ввода в соответствии с тем, как работает механизм связывания по умолчанию:

http://www.asp.net/mvc

Это отличный источник для всех этих основ.

...