2012-03-23 44 views
0

我有一個用戶從其下訂單的視圖(MVC3)。視圖綁定到我用來顯示模型項目的模型。這個觀點有兩個功能。首先輸入客戶詳細信息,然後選擇用戶訂購的項目。這是使用另建模型的代碼i'm被髮送回服務器端:錯誤地使用AJAX?

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?

+1

怎麼樣生成部分視圖並使用ajax從控制器中返回? – cpoDesign 2012-03-23 08:25:17

+0

如果我使用部分視圖不會只是加載在同一頁上的ajax文章發送? – user228720 2012-03-23 08:35:47

+0

只需隱藏包含div的部分視圖,然後ajax成功顯示部分和隱藏其餘內容 – user228720 2012-03-23 09:56:55

回答

0

你可以在Ajax中使用knockout JS,並用JavaScript對象和普通html的混合呈現頁面。