tratando de convertir un objeto en javascript {} – C # Key Value Collection O Dictionary o

Me gustaría entender mejor el problema de convertir un objeto en una colección de nombre contra valor

di … solo si pudiera hacerlo así

1) ¿el java-script necesita algún ajuste fino? empaquetando los datos ..

2) y lo más importante para mí: ¿Cuál es la forma correcta de hacer la conversión de ese valor de clave Js a un Dictionary C# ?

la parte Aspx / Html

     (choose a random) random Top Beach random Top Center random Local Pub  

la parte JavaScript / jQuery

  function AddNew() { if (!confirm("would you like to add this contact ?")) return; var Name = $('#tbx_Name').val(); var City = $('#tbx_City').val(); var Country = $('#tbx_Country').val(); var selectedRC = $('#ChosenRandomClass option:selected').val(); var hDate = [] var param1 = { key: "Name", value: Name }; var param2 = { key: "City", value: City }; var param3 = { key: "Country", value: Country }; var param4 = { key: "SelctedClass", value: selectedRC }; hDate.push(param1); hDate.push(param2); hDate.push(param3); hDate.push(param4); // is this part necessary the data will not get to // code behind properly without the serializing ? var startPrt = Sys.Serialization.JavaScriptSerializer.serialize(hDate); ajaxUpdate("addNew", startPrt); } 

el Code behind C#

 public void AddNewRecord(object startPrt) { Dictionary SenthDate = new Dictionary(); // .....etc } 

apreciaré la respuesta correcta

Gracias por su amable ayuda y tiempo.

Probé su muestra y noté que el parámetro startPrt en realidad se está recibiendo como una matriz de diccionario (cadena, objeto) . Por lo tanto, si haces la llamada AJAX de esta manera:

 var hDate = []; hDate.push({ key: "Name", value: Name }); hDate.push({ key: "City", value: City }); hDate.push({ key: "Country", value: Country }); hDate.push({ key: "SelctedClass", value: selectedRC }); $.ajax({ contentType: 'application/json; charset=utf-8', url: 'MyPage.aspx/AddNewRecord', type: 'POST', data: JSON.stringify({ startPrt: hDate }), success: success, // success callback error: error // error callback }); 

Puede definir su método Web como el siguiente para convertir el parámetro startPrt a un diccionario:

 [WebMethod] public static void AddNewRecord(object startPrt) { var dict = new Dictionary(); foreach (Dictionary pair in (Array)startPrt) dict.Add((string)pair["key"], pair["value"]); } 

El enfoque convencional sería construir un objeto javascript plano, que puede ser utilizado por jQuery.ajax(...) sin ningún procesamiento previo.

 var hDate = { "Name": $('#tbx_Name').val(), "City": $('#tbx_City').val(), "Country": $('#tbx_Country').val(), "SelctedClass": $('#ChosenRandomClass').val() }; ajaxUpdate("addNew", hDate); 

En ajaxUpdate() , la expresión ajax será algo como esto:

 function ajaxUpdate(action, data) { ... $.ajax({ url: '...', data: data, ... success: function(){ ... } }); } 

Por lo tanto, los datos serializados estarán disponibles para la secuencia de comandos del lado del servidor de cualquier tipo.