views:

208

answers:

1

i have a javascript object, obj, that gets passed to an mvc action via a $.post() like so:

var obj = {
    Items: [{ Text: "", Value: { Property1: "", Property2: "" },
            { Text: "", Value: { Property1: "", Property2: "" }]
};
$.post('MyAction', obj, function() {});

the action signature looks like this:

public ActionResult MyAction(FormCollection collection)
{
}

i need to be able to build an object from the FormCollection, however i'm running into an issue where the keys are in the form:

"Items[0][Text]"
"Items[0][Value][Property1]"
"Items[0][Value][Property2]"
"Items[1][Text]"
"Items[1][Value][Property1]"
"Items[1][Value][Property2]"

i'm wondering if there's a clean way to build the desired C# object from the given FormCollection. i understand that i could change the action method signature to take in the type of object i'm interested in, but that was presenting its own issues.

A: 

If you can change the javascript side so you're sending in a json version of the data instead, I would think you could either accept a string and do a json deserialization yourself in the controller or do a model binder to do it for you.

James Manning
thanks. as you suggested, i ended up sending a json string to the action and writing a custom model binder using json.net for deserializing the request.
ob