2012-07-23 2 views
0

У меня есть массив пар значений имени в Javascript (как и form.SerializeArray()), который я хочу передать моему контроллеру и получить его как список объектов словаря.Пара массива пар имени имени для контроллера в качестве словаря

Возможно ли это? Если да, то как мне передать объект?

Благодаря

EDIT

Вот мой JS объект, который я хочу передать

var ct = $('#frmrpt').serializeArray(); 
url="MyController/Print"; 
var vhtml = "<iframe src=" + url + " style='width: 100%; height: 100%' ></iframe>"; 

$('#repo').html(vhtml); 

И вот как я хочу, чтобы получить его в контроллере

public ActionResult Print(List<Dictionary<string, object>> prms) 

Я использую что-то вроде ниже для deseria lize json strings

public static T DeserializeJSON<T>(string jsonData) 
{ 
    if (!string.IsNullOrEmpty(jsonData)) 
    { 
     //jsonData = jsonData.Replace('"', ' '); 
     var serializer = new JavaScriptSerializer(); 
     return serializer.Deserialize<T>(jsonData); 
    } 
    return default(T); 
} 
+0

Как мы должны знать? Опубликуйте какой-нибудь код, по крайней мере покажите объект, о котором идет речь, и объясните, как работает контроллер и как вы собираетесь делать словарный запас? – adeneo

ответ

3

Вы можете использовать json.net для десериализации своей коллекции.

Контроллер:

[HttpPost] 
[Authorize] 
[JsonFilter(Param = "data", JsonDataType = typeof(Dictionary<string,string>))] 
public ActionResult Add(Dictionary<string, string> data) 
{ 

} 

клиент:

$.ajax({ 
     type: 'POST', 
     url: url, 
     async: true, 
     data: JSON.stringify(data), 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 

     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

     } 
    }); 
+0

Работал отлично. Спасибо! – Deb

+0

@Deb Нет проблем просто спросить –

Смежные вопросы