From 5abbca0f5da48d028db3df7d7ba7e58c2c01b905 Mon Sep 17 00:00:00 2001 From: Darren Ferguson Date: Wed, 14 May 2014 11:32:39 +0100 Subject: [PATCH] Adding extension methods to PartialViewMacroModel to allow: Model.GetParameterValue("datey") Model.GetParameterValue("booly", 8) //optional default value if parsing can't happen Model.GetParameterValue("booly",8) // can be used like this as type is implied by default value argument --- .../Models/PartialViewMacroModelExtensions.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/Umbraco.Web/Models/PartialViewMacroModelExtensions.cs diff --git a/src/Umbraco.Web/Models/PartialViewMacroModelExtensions.cs b/src/Umbraco.Web/Models/PartialViewMacroModelExtensions.cs new file mode 100644 index 0000000000..8b4c8ed224 --- /dev/null +++ b/src/Umbraco.Web/Models/PartialViewMacroModelExtensions.cs @@ -0,0 +1,38 @@ +using Umbraco.Core; + +namespace Umbraco.Web.Models +{ + /// + /// Extension methods for the PartialViewMacroModel object + /// + public static class PartialViewMacroModelExtensions + { + /// + /// Attempt to get a Marco parameter from a PartialViewMacroModel and return a default value otherwise + /// + /// + /// + /// + /// Parameter value if available, the default value that was passed otherwise. + public static T GetParameterValue(this PartialViewMacroModel partialViewMacroModel, string parameterAlias, T defaultValue) + { + if (partialViewMacroModel.MacroParameters.ContainsKey(parameterAlias) == false || string.IsNullOrEmpty(partialViewMacroModel.MacroParameters[parameterAlias].ToString())) + return defaultValue; + + var attempt = partialViewMacroModel.MacroParameters[parameterAlias].TryConvertTo(typeof(T)); + + return attempt.Success ? (T) attempt.Result : defaultValue; + } + + /// + /// Attempt to get a Marco parameter from a PartialViewMacroModel + /// + /// + /// + /// Parameter value if available, the default value for the type otherwise. + public static T GetParameterValue(this PartialViewMacroModel partialViewMacroModel, string parameterAlias) + { + return partialViewMacroModel.GetParameterValue(parameterAlias, default(T)); + } + } +}