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 -~----------~----~----~----~------~----~------~--~---
