2

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.

Omer Bokhari
  • 57,458
  • 12
  • 44
  • 58

1 Answers1

1

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.

Community
  • 1
  • 1
James Manning
  • 13,429
  • 2
  • 40
  • 64
  • 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. – Omer Bokhari May 28 '10 at 07:19