Skip to content

Commit e40ff20

Browse files
committed
Fix a couple issues with class action parameters detection
1 parent 6084fef commit e40ff20

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

Build/CommonAssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
//
1616
// You can specify all the values or you can default the Revision and Build Numbers
1717
// by using the '*' as shown below:
18-
[assembly: AssemblyVersion("3.2.20")]
19-
[assembly: AssemblyFileVersion("3.2.20")]
18+
[assembly: AssemblyVersion("3.2.21")]
19+
[assembly: AssemblyFileVersion("3.2.21")]
2020
//[assembly: AssemblyInformationalVersion("2.5-filters")]

Griddly.Mvc/GriddlyParameterAttribute.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public override void OnActionExecuting(ActionExecutingContext filterContext)
3737

3838
var actionParams = new List<KeyValuePair<string, object>>(filterContext.ActionParameters);
3939
//add any properties of model classes
40-
foreach (var ap in filterContext.ActionParameters.Where(x => x.Value?.GetType().IsClass == true))
41-
foreach (var pi in ap.Value.GetType().GetProperties().Where(x => x.CanRead))
40+
foreach (var ap in filterContext.ActionParameters.Where(x => x.Value?.GetType().IsClass == true && x.Value.GetType() != typeof(string)))
41+
foreach (var pi in ap.Value.GetType().GetProperties().Where(x => x.CanRead && x.GetIndexParameters().Length == 0))
4242
actionParams.Add(new KeyValuePair<string, object>(pi.Name, pi.GetValue(ap.Value)));
4343

4444
foreach (var param in actionParams)
@@ -103,9 +103,9 @@ public override void OnActionExecuted(ActionExecutedContext filterContext)
103103
// now, we could use the context.Parameters... but the raw string values seems more like what we want here...
104104
foreach (var param in filterContext.ActionDescriptor.GetParameters())
105105
{
106-
if (param.ParameterType.IsClass)
106+
if (param.ParameterType.IsClass && param.ParameterType != typeof(string))
107107
{
108-
foreach (var pi in param.ParameterType.GetProperties())
108+
foreach (var pi in param.ParameterType.GetProperties().Where(x => x.CanRead && x.GetIndexParameters().Length == 0))
109109
AddParameter(filterContext, data, pi.Name);
110110
}
111111
else

0 commit comments

Comments
 (0)