Вам не нужно создавать новый контроллер. Отправка формы через jQuery на самом деле ничем не отличается от отправки формы нажатием кнопки мыши.
Код из предыдущего ответа:
$.post('/company/new', $(form).serialize(), function() {
dialog.dialog('destroy');
}
будет публиковать каждое поле вашей формы в POST-запросе, как обычно. Если вы называете поля формы так, что они представляют свойства объекта и, таким образом, могут быть привязаны к объекту модели, как обычно, вы можете создать свой метод действия как обычный:
public ActionResult New(CompanyDetails newCompany)
{
if (ModelState.IsValid)
{
// Insert newCompany into database.
}
}
Вы также можете просто использовать параметр FormCollection и TryUpdateModel () для заполнения созданного вами объекта:
public ActionResult New(FormCollection postedValues)
{
// Create a new Company() here and just call TryUpdateModel() on it:
var company = new Company();
TryUpdateModel(company);
if (ModelState.IsValid)
{
/// Insert
}
}
Если по какой-либо причине ваши поля формы не могут соответствовать свойствам объекта, то вы можете выбрать «ручной» способ и просто найти в параметре FormCollection нужные вам данные поля и выполнить бизнес-логику для создания новой компании с опубликованными значениями.
Как только вы закончили создание своей компании, вы должны помнить, что метод действия был вызван через ajax, и это обратный вызов jQuery, который будет обрабатывать ответ. Вы можете вернуть JsonResult
, который просто указывает на успех или неудачу, и просто закрыть диалоговое окно или вернуть полное представление, которое обратный вызов jQuery будет обрабатывать как HTML-данные и отображать в диалоговом окне.