asp.net mvc - Using ModelBinder from action -
i'm using third party reporting engine (stimulsoft) calls action on controller via post. inside of form, many fields sent mechanics of third party. inside of action need parameters parameters inside of url.
i want able use model binder inside of action.
at moment i'm getting each fields 1 one using methods
var querystring = httputility.parsequerystring(request.urlreferrer.query); var preparedby = querystring["preparedby"]; var preparedat = (querystring["preparedat"] != null) ? convert.todatetime(querystring["preparedat"]) : datetime.today;
i prefer use model , binding using urlreferrer. i've created urlreferrervalueprovider bind action. i've tried that, i'm getting nullreferenceexception on binder.bindmodel line
public class urlreferrervalueprovider : namevaluecollectionvalueprovider { public urlreferrervalueprovider(controllercontext controllercontext) : base(httputility.parsequerystring(controllercontext.httpcontext.request.urlreferrer.query), cultureinfo.invariantculture) { } } public actionresultat getreportsnapshot() { var bindingcontext = new modelbindingcontext() { valueprovider = new urlreferrervalueprovider(controllercontext), modelname = "myreportmodel", fallbacktoemptyprefix = true }; var binder = new defaultmodelbinder(); var myreportmodel = binder.bindmodel(controllercontext, bindingcontext); [...] return new emptyresult(); } public class myreportmodel { public string preparedby {get;set;} public datetime preparedat {get;set;} }
edited based on comments.
public class myreportmodel { public string preparedby {get;set;} public datetime preparedat {get;set;} } public class urlreferrervalueprovider : namevaluecollectionvalueprovider { public urlreferrervalueprovider(controllercontext controllercontext) : base(httputility.parsequerystring(controllercontext.httpcontext.request.urlreferrer.query), cultureinfo.invariantculture) { } } public actionresult getreportsnapshot(myreportmodel model) { this.updatemodel(model, new urlreferrervalueprovider(controllercontext)); return new emptyresult(); }
Comments
Post a Comment