【发布时间】:2012-03-23 08:21:49
【问题描述】:
我有一个视图(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 设置到收据站点以向用户显示已创建的内容。这一切都有效,但我的问题是我希望从接收 [httppost] 并且不设置新 href 的控制器返回收据视图(OrderInfo)。有没有办法做到这一点?使用常规表单提交时这很容易,但是因为我的模型的值不是来自一种表单,所以事情变得复杂了。也许我不应该使用 AJAX?
【问题讨论】:
-
如何生成局部视图并使用 ajax 从控制器返回?
-
如果我使用部分视图,它不会只加载到发送 ajax 帖子的同一页面上吗?
-
只是隐藏了包含部分视图的 div,然后在 ajax 成功后显示部分内容并隐藏了其余内容
标签: ajax asp.net-mvc-3 post