Пример #1
0
        private WebPageContext CreatePageContextFromParameters(bool isLayoutPage, params object[] data)
        {
            object first = null;

            if (data != null && data.Length > 0)
            {
                first = data[0];
            }

            var pageData = PageDataDictionary <dynamic> .CreatePageDataFromParameters(PageData, data);

            return(Util.CreateNestedPageContext(PageContext, pageData, first, isLayoutPage));
        }
Пример #2
0
        // Creates a new PageData dictionary using only the original items from the pageData (excluding the string dictionary and indexed list),
        // and adding the parameters.
        internal static IDictionary <object, dynamic> CreatePageDataFromParameters(
            IDictionary <object, dynamic> previousPageData,
            params object[] data
            )
        {
            var oldPageData = previousPageData as PageDataDictionary <dynamic>;

            // Add the original items
            var pageData = new PageDataDictionary <dynamic>();

            foreach (var kvp in oldPageData.Data)
            {
                pageData.Data.Add(kvp);
            }

            if (data != null && data.Length > 0)
            {
                // Add items to the indexed list
                for (int i = 0; i < data.Length; i++)
                {
                    pageData.IndexedValues.Add(data[i]);
                }

                // Check for anonymous types, and add to the string dictionary
                object first = data[0];
                Type   type  = first.GetType();
                if (TypeHelper.IsAnonymousType(type))
                {
                    // Anonymous type
                    TypeHelper.AddAnonymousObjectToDictionary(pageData.StringDictionary, first);
                }

                // Check if the first element is of type IDictionary<string, object>
                if (typeof(IDictionary <string, object>).IsAssignableFrom(type))
                {
                    // Dictionary
                    var stringDictionary = first as IDictionary <string, object>;
                    foreach (var kvp in stringDictionary)
                    {
                        pageData.StringDictionary.Add(kvp);
                    }
                }
            }

            return(pageData);
        }
 public DynamicPageDataDictionary(PageDataDictionary <TValue> dictionary)
 {
     _data = dictionary;
 }