how json framework are tou using ??

On Jan 31, 7:59 pm, James Thigpen <[email protected]> wrote:
> The model I think you're referring to is at the bottom of the original
> message:
>
>     public class CreateDashboardViewModel
>     {
>         public string Title { get; set; }
>     }
>
> the json model being passed in is (You can rip out the jquery-fu and
> just put in a string for the title to simplify things.
>
>         var model = {Title: "TheTitle" };
>         var json = {model: $.toJSON(model)};
>
> I actually just got it working, I had to rip out the contenttype
> specification in the ajax call ("contentType: 'application/json;
> charset=utf-8'").  Before I did that the passed in data wasn't
> appearing int he Context.Request.Params collection. Any idea why?
>
> I wonder if that'll bite me in the rear in some obscure way...
>
> -jt
>
> On Jan 31, 2:28 pm, Mark Jensen <[email protected]> wrote:
>
> > Hi
>
> > maybe you should show us how the model as  well as the the json object
> > you try to bind to the model :)
>
> > but I think you problem lies here
>
> > Inner exception:
> > ArgumentNullException
> > Message:
> > Value cannot be null.
> > Parameter name: s
>
> > could it be that you are trying to bind null value to a datatype that
> > cant be null ?
>
> > On Jan 31, 7:55 pm, James Thigpen <[email protected]> wrote:
>
> > > I'm having trouble passing a JSON object to my action using the
> > > JSONBinder. Binding the JSON info to my model fails spectacularly with
> > > the following exception:
>
> > > MonoRailException
> > > Message:
> > > Error building method arguments. Last param analyzed was model with
> > > value ''
> > > StackTrace:
> > >    at
> > > Castle.MonoRail.Framework.SmartDispatcherController.BuildMethodArguments
> > > (ParameterInfo[] parameters
> > > , IRequest request, IDictionary`2 actionArgs)
> > >    at Castle.MonoRail.Framework.SmartDispatcherController.InvokeMethod
> > > (MethodInfo method, IRequest request
> > > , IDictionary`2 extraArgs)
> > >    at Castle.MonoRail.Framework.ActionMethodExecutorCompatible.Execute
> > > (IEngineContext engineContext,
> > >  IController controller, IControllerContext context)
> > >    at Castle.MonoRail.Framework.Controller.RunActionAndRenderView()
>
> > > Inner exception:
> > > ArgumentNullException
> > > Message:
> > > Value cannot be null.
> > > Parameter name: s
> > > StackTrace:
> > >    at System.IO.StringReader..ctor(String s)
> > >    at Newtonsoft.Json.JavaScriptConvert.DeserializeObject(String
> > > value, Type type, JsonConverter[] converters
> > > )
> > >    at Newtonsoft.Json.JavaScriptConvert.DeserializeObject(String
> > > value, Type type)
> > >    at
> > > Castle.MonoRail.Framework.Services.NewtonsoftJSONSerializer.Deserialize
> > > (String jsonString, Type
> > >  expectedType)
> > >    at Castle.MonoRail.Framework.JSONBinderAttribute.Bind
> > > (IEngineContext context, IController controller
> > > , IControllerContext controllerContext, ParameterInfo parameterInfo)
> > >    at
> > > Castle.MonoRail.Framework.SmartDispatcherController.BuildMethodArguments
> > > (ParameterInfo[] parameters
> > > , IRequest request, IDictionary`2 actionArgs)
>
> > > This is the javascript initiating the request:
>
> > > $(function () {
> > >     $("#create-dashboard").click(function (e) {
> > >         e.preventDefault();
>
> > >         var model = {Title: $("#new-dashboard-title").val() };
> > >         var json = {model: $.toJSON(model)};
>
> > >         var callback = function (result) {
> > >             alert(result);
> > >         };
>
> > >         $.ajax({type:'POST', url: 'Create.ashx', dataType: 'json',
> > > data: json,
> > >                 contentType: 'application/json; charset=utf-8',
> > >                 success: callback, error: function () { alert
> > > ("Grrr."); }});
> > >     });
>
> > > });
>
> > > The action:
>
> > >         [return: JSONReturnBinder]
> > >         public DashboardCreatedViewModel Create([JSONBinder]
> > > CreateDashboardViewModel model)
> > >         {
> > >             var dashboard = dashboardService.Create(CurrentUser,
> > > model.Title);
>
> > >             return new DashboardCreatedViewModel(new DashboardSummary
> > > (dashboard));
> > >         }
>
> > > And the CreateDashboardViewModel:
>
> > >     public class CreateDashboardViewModel
> > >     {
> > >         public string Title { get; set; }
> > >     }
>
> > > The only references I've been able to find to using the JSONBinder
> > > have been really old and referenced assemblies which don't exist
> > > anymore.  I'm running off a not quite current version of castle trunk.
> > > I'm pretty sure my problem lies in my own ignorance, and less in a
> > > bug.
>
> > > Any help is appreciated.  I apologize for the length of the message as
> > > well. My problem sits at that annoying nexus of multiple moving parts.
> > > I tried to simplify as much as possible.
>
> > > -jt
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to