【问题标题】:Wrong to use AJAX?错误地使用 AJAX?
【发布时间】: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


【解决方案1】:

您可以将 Knockout JS 与 Ajax 结合使用,并使用 JavaScript 对象和常规 html 混合呈现您的页面。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2015-10-27
    • 2014-03-23
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多