У меня есть представление (MVC3), с которого пользователи размещают заказы. Представление привязано к модели, которую я использую для отображения элементов модели. В этом представлении есть две функциональные возможности. Сначала вы вводите данные о клиентах, а затем выбираете товары, которые заказал пользователь. Это код, который я использую для построения другой модели для отправки обратно на сервер:
var modelItems = {
ModelID: [],
Amount: []
};
var serviceModel = {
Name: $.trim($('#name').val()),
Customernumber: $.trim($('#customernumber').val()),
Address1: $.trim($('#address1').val()),
Address2: $.trim($('#address2').val()),
Zipcode: $.trim($('#zipcode').val()),
City: $.trim($('#city').val()),
Country: $.trim($('#country').val()),
Phone: $.trim($('#phone').val()),
Mobile: $.trim($('#mobile').val()),
Email: $.trim($('#email').val())
};
$('div.modelSpan').each(function (i) {
var textBox = $(this).children();
var value = $(textBox).val();
if (value != '0' && value != '') {
var modelID = $(textBox).attr('name');
modelItems.ModelID.push(modelID);
modelItems.Amount.push(value);
}
});
var accessory = {
ModelItems: modelItems,
ServiceModel: serviceModel
};
$.ajax({
url: '/Site/Order', //Renamed sec reasons
type: "POST",
data: JSON.stringify(accessory),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (ordernumber) {
window.location.href = "/Site/OrderInfo/" + businessAB + "/" + ordernumber;
},
error: function () {
alert('error');
}
});
Крутая вещь в MVC3 заключается в том, что мой аксессуар автоматически связывается с моей моделью на стороне сервера, которая называется AccessoriesModel. При успешном обратном вызове я устанавливаю новый href на сайт получения, чтобы показать пользователю, что было создано. Это все работает, но моя проблема в том, что я хотел бы, чтобы представление квитанции (OrderInfo) было возвращено из моего контроллера, который получает [httppost] и не устанавливает новый href. Есть ли способ сделать это? Это легко при использовании регулярной отправки формы, но поскольку значения для моей модели не взяты из одной формы, это усложняет ситуацию. Может быть, я не должен использовать AJAX?