2013-05-30 42 views
0

好吧,我會盡力更好地解釋我問的問題:我有一個aspx webform,我用它來創建一個實體,簡單的數據捕獲。這個實體可以有許多附屬於它的一個或多個關係的子實體,它們是從同一個表單創建的。我不想使用沉重的asp.net組件,如數據列表或任何自定義組件來捕獲這些組件。我目前這樣做的方式是,我打開一個對話框,在託管組合框的頁面中填充了一個帶有ajax調用的選項。一旦用戶選擇了其中一個條目並保存,我將一個條目添加到一個javascript集合中,我用它來保留用戶選擇並將它們顯示在客戶端的列表中。當用戶提交我的表單時,我如何提交這個集合並在服務器上重新進行解析?我正在考慮使用json來存儲,序列化,然後反序列化。這是一個好方法嗎?高效,輕便的方式張貼多個價值領域的形式爲aspx網絡形式

回答

1

您可以使用以下

var postData = function (myobjectinstance){ 
var objString = JSON.stringify(myobjectinstance); 
$.ajax({ 
    type: 'POST', 
    url: 'your url', 
    data: objString, 
    success: function(){ 
     alert('did it'); 
    }, 
    dataType: 'json' 
}); 

張貼};

的然後用json.net你可以反序列化JSON字符串

// You can use JSON.Net 
public static void PostMethod(string jsonstring) 
{ 
    var restoredObject = JsonConvert.DeserializeObject<MyObjectType>(jsonstring) 

    // do something with your object 
} 

或者你可以用一個ScriptManager如果您正在使用您的網頁上的ScriptManager結合使用PageMethods在服務器上。有關更多信息,請參閱此link

+0

但我不想使用ajax調用發佈它。我希望它以整個表格發佈 – kfc

+0

您可以使用隱藏字段發佈json字符串。 var hfObject = document.getElementById('<%= hfObject.ClientID%>');這個函數返回的是一個數組。 hfObject.value = JSON.stringify(myobjectinstance); – Gabe