Убедитесь, что вы отменили действие по умолчанию для кнопки отправки, вернув false из вашего обратного вызова:
$('#addExperience').click(function() {
CallSomeAction();
return false; // <!-- that's important to prevent the form being submitted normally
});
ОБНОВЛЕНИЕ:
После того, как, наконец, вы показали свой код здесьпроблема:
[HttpPost]
public ActionResult AddCar(UserViewModel model)
Параметр действия называется model
.Но у вас также есть свойство внутри UserViewModel
, которое называется Model
, что конфликтует.Связыватель модели по умолчанию не знает, какой из них связывать.
Таким образом, одна из возможностей - переименовать аргумент действия:
[HttpPost]
public ActionResult AddCar(UserViewModel uvm)
и на стороне клиента:
data: JSON.stringify({ uvm: model })
ОБНОВЛЕНИЕ 2:
В вашем javascript есть следующая строка:
var model = @Html.Raw(Json.Encode(Model));
Проблема в том, что ваше действие GET Index в WizardController не передает никакую модель представления в представление:
[HttpGet]
public ActionResult Index()
{
return View();
}
Поэтому, когда вы посмотрите на сгенерированный исходный код вашей страницы, вы заметите:
var model = null;
Как следствие, вы не можете ожидать ничего, кроме null
в вашем AddCar
действии.
При этом я предполагаю, что вы не желаете отправлять модель представления на это действие.Вы готовы отправить 2 значения, которые пользователь ввел в форму.
Так что вы, вероятно, хотите что-то вроде этого:
function AddCars() {
$.ajax({
url: '@Url.Action("AddCar")',
type: 'POST',
data: $('form').serialize(),
success: function(result) {
alert('successful');
}
});
}