Example #1
0
        public void TestApply()
        {
            var obj1 = new { Test = "XXX" };
            var obj2 = new { Value = 15.5m };

            ViewDataContainer viewData1 = new ViewDataContainer(obj1);
            ViewDataContainer viewData2 = new ViewDataContainer(obj2);

            ViewDataContainer viewData = new ViewDataContainer();

            viewData.Apply(viewData1);
            viewData.Apply(viewData2);

            object value;
            Type   type;


            Assert.AreEqual("XXX", viewData["Test"]);
            Assert.AreEqual(15.5m, viewData["Value"]);
            Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

            Assert.IsInstanceOfType(typeof(string), value);
            Assert.AreEqual(typeof(string), type);
            Assert.AreEqual("XXX", value);

            Assert.IsTrue(viewData.TryGetValue("Value", out value, out type));

            Assert.IsInstanceOfType(typeof(decimal), value);
            Assert.AreEqual(typeof(decimal), type);
            Assert.AreEqual(15.5m, value);

            Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));
            Assert.IsFalse(viewData.TryGetValue("Value2", out value, out type));
        }
Example #2
0
         public void TestPropertyOfMultipleLinkedObject()
         {
             var obj1 = new { Test = "XXX" };
             var obj2 = new { Value = 15.5m };

             ViewDataContainer viewData = new ViewDataContainer(obj1,obj2);

             object value;
             Type type;

             Assert.AreEqual("XXX", viewData["Test"]);
             Assert.AreEqual(15.5m, viewData["Value"]);
             Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

             Assert.IsInstanceOfType(typeof(string), value);
             Assert.AreEqual(typeof(string), type);
             Assert.AreEqual("XXX", value);

             Assert.IsTrue(viewData.TryGetValue("Value", out value, out type));

             Assert.IsInstanceOfType(typeof(decimal), value);
             Assert.AreEqual(typeof(decimal), type);
             Assert.AreEqual(15.5m, value);

             Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));
             Assert.IsFalse(viewData.TryGetValue("Value2", out value, out type));

         }
Example #3
0
        public void RegisterCss_Patch()
        {
            var    path           = "path";
            var    priority       = 123;
            var    omitAppVersion = true;
            object htmlAttributes = null;

            var viewContext       = new ViewContext();
            var viewDataContainer = new ViewDataContainer();
            var scriptManager     = ScriptManager.GetFromViewData(viewDataContainer.ViewData);

            scriptManager.RegisterCss(path, priority, htmlAttributes, omitAppVersion);
            var htmlHelper = new HtmlHelper <dynamic>(viewContext, viewDataContainer);
            var expected   = "<!--[if lte IE 9]>" + htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim() + "<![endif]-->";

            var viewContext2       = new ViewContext();
            var viewDataContainer2 = new ViewDataContainer();
            var scriptManager2     = ScriptManager.GetFromViewData(viewDataContainer2.ViewData);

            scriptManager2.RegisterCss(path, priority, htmlAttributes, omitAppVersion, patchCondition: "lte IE 9");
            var htmlHelper2 = new HtmlHelper <dynamic>(viewContext2, viewDataContainer2);
            var result      = htmlHelper2.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }
Example #4
0
        private string ProcessView(string input, ViewDataContainer ViewData)
        {
            ViewResult vr = new ViewResult();

            vr.ProcessView(input, ViewData);
            return(Encoding.UTF8.GetString(vr.Body));
        }
Example #5
0
        /// <summary>
        /// Gets <see cref="HtmlHelper{TModel}"/> for the requested object
        /// </summary>
        /// <returns></returns>
        public static HtmlHelper <T> For <T>(this HtmlHelper h)
        {
            ViewDataDictionary dic  = h.GetDictionary();
            ViewDataContainer  cont = new ViewDataContainer(dic);

            return(new HtmlHelper <T>(h.ViewContext, cont));
        }
Example #6
0
        internal static HtmlHelper ForMemberTemplate(HtmlHelper currentHtml, ModelMetadata memberMetadata)
        {
            if (currentHtml is null)
            {
                throw new ArgumentNullException(nameof(currentHtml));
            }
            if (memberMetadata is null)
            {
                throw new ArgumentNullException(nameof(memberMetadata));
            }

            ViewDataDictionary currentViewData = currentHtml.ViewData;

            var container = new ViewDataContainer {
                ViewData = new ViewDataDictionary(currentViewData)
                {
                    Model         = memberMetadata.Model,
                    ModelMetadata = memberMetadata,
                    TemplateInfo  = new TemplateInfo {
                        HtmlFieldPrefix = currentViewData.TemplateInfo.GetFullHtmlFieldName(memberMetadata.PropertyName)
                    }
                }
            };

            return(currentHtml.Clone(currentHtml.ViewContext, container));
        }
        /// <summary>
        /// Creates a new IViewDataContainer but with a filtered ModelState
        /// </summary>
        /// <param name="container"></param>
        /// <param name="prefix"></param>
        /// <returns></returns>
        public static IViewDataContainer FilterContainer(this IViewDataContainer container, string prefix)
        {
            var newContainer = new ViewDataContainer();

            newContainer.ViewData.ModelState.Merge(container.ViewData.ModelState, prefix);
            return(newContainer);
        }
        protected virtual SitecoreHelper GetSitecoreHelper()
        {
            var current           = ContextService.Get().GetCurrent <ViewContext>();
            var viewDataContainer = new ViewDataContainer(current.ViewData);
            var htmlHelper        = new HtmlHelper(current, viewDataContainer);

            return(new SitecoreHelper(htmlHelper));
        }
Example #9
0
        private ViewDataContainer BuildViewData()
        {
            ViewDataContainer ViewData = new ViewDataContainer();
            dynamic           ViewBag  = new ViewBagContainer(ViewData);

            ViewData.Set("Title", "An <html> View Test");
            ViewBag.Body = "<div>Test text is the best text.</div><div><a href=\"mailto:[email protected]\">Mail</a></div>";
            return(ViewData);
        }
        /// <summary>
        /// Creates a new IViewDataContainer but with a filtered ModelState
        /// </summary>
        /// <param name="container"></param>
        /// <param name="prefix"></param>
        /// <returns></returns>
        public static IViewDataContainer FilterContainer(this IViewDataContainer container, string prefix)
        {
            var newContainer = new ViewDataContainer();

            newContainer.ViewData.ModelState.Merge(container.ViewData.ModelState, prefix);
            //change the html field name too
            newContainer.ViewData.TemplateInfo.HtmlFieldPrefix = prefix;
            return(newContainer);
        }
    static MyExtensionMethods()
    {
        Renderer = (html, model) =>
        {
            // this is the default implementation that will be used by MVC runtime
            var viewDataContainer = new ViewDataContainer <INode>(model);
            var modelHtmlHelper   = new HtmlHelper <INode>(html.ViewContext, viewDataContainer);

            return(modelHtmlHelper.DisplayFor(node => node, "TemplateName"));
        };
    }
        public static HtmlHelper <TModel> BuildHtmlHelper <TModel>(ViewContext viewContext, TModel model)
        {
            var viewDataDictionary = new ViewDataDictionary <TModel>(model);

            viewContext.ViewData.Where(v => !viewDataDictionary.ContainsKey(v.Key)).ToList()
            .ForEach(viewDataDictionary.Add);

            var viewDataContainer = new ViewDataContainer(viewDataDictionary);

            return(new HtmlHelper <TModel>(viewContext, viewDataContainer));
        }
        public static ScopedHtmlHelper <TPostModel> ForModel <TViewModel, TPostModel>(this HtmlHelper <TViewModel> helper, TPostModel postModel, Action onDispose = null)
        {
            var viewData = new ViewDataDictionary(helper.ViewData);

            viewData.Model = postModel;
            var data = new ViewDataContainer {
                ViewData = viewData
            };
            var newHelper = new HtmlHelper <TPostModel>(helper.ViewContext, data);

            return(new ScopedHtmlHelper <TPostModel>(newHelper, onDispose));
        }
Example #14
0
        public static HtmlHelper <TModel> For <TModel>(this ViewContext viewContext, ViewDataDictionary viewData, RouteCollection routeCollection, TModel model, string htmlPrefix = null)
        {
            var newViewData = new ViewDataDictionary(viewData)
            {
                Model = model
            };
            ViewContext newViewContext = new ViewContext(viewContext.Controller.ControllerContext, viewContext.View, newViewData, viewContext.TempData, viewContext.Writer);

            newViewData.TemplateInfo.HtmlFieldPrefix = htmlPrefix;
            var viewDataContainer = new ViewDataContainer(newViewContext.ViewData);

            return(new HtmlHelper <TModel>(newViewContext, viewDataContainer, routeCollection));
        }
Example #15
0
        public void RenderGlobalJavascript_NotEncodeQuotes()
        {
            var viewContext       = new ViewContext();
            var viewDataContainer = new ViewDataContainer();

            var expected = "<script type=\"text/javascript\">window.variable = \"value\";</script>";

            var scriptManager = ScriptManager.GetFromViewData(viewDataContainer.ViewData);

            scriptManager.RegisterGlobalJavascript("variable", "value");
            var htmlHelper = new HtmlHelper <dynamic>(viewContext, viewDataContainer);
            var result     = htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }
Example #16
0
        public static HtmlHelper <TModel> For <TModel>(ViewContext viewContext, ViewDataDictionary viewData, RouteCollection routeCollection, TModel model)
        {
            var newViewData = new ViewDataDictionary(viewData)
            {
                Model = model
            };
            ViewContext newViewContext = new ViewContext(
                viewContext.Controller.ControllerContext,
                viewContext.View,
                newViewData,
                viewContext.TempData,
                viewContext.Writer);
            var viewDataContainer = new ViewDataContainer(newViewContext.ViewData);

            return(new HtmlHelper <TModel>(newViewContext, viewDataContainer, routeCollection));
        }
Example #17
0
        public void TestPropertyOfLinkedObject()
        {
            var obj = new { Test = "XXX" };

            ViewDataContainer viewData = new ViewDataContainer(obj);

            object value;
            Type   type;

            Assert.AreEqual("XXX", viewData["Test"]);
            Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

            Assert.IsInstanceOfType(typeof(string), value);
            Assert.AreEqual(typeof(string), type);
            Assert.AreEqual("XXX", value);

            Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));
        }
        public void RegisterCss_Basic()
        {
            var viewContext = new ViewContext();
            var viewDataContainer = new ViewDataContainer();

            var path = "path";
            var priority = 123;
            var omitAppVersion = true;
            var expected = "<link href=\"path\" rel=\"stylesheet\" type=\"text/css\" />";
            object htmlAttributes = null;

            ScriptManager target = ScriptManager.GetFromViewData(viewDataContainer.ViewData);
            target.RegisterCss(path, priority, htmlAttributes, omitAppVersion);
            var htmlHelper = new HtmlHelper<dynamic>(viewContext, viewDataContainer);
            var result = htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }
Example #19
0
        public void TestPropertyOfDictionaryEntry()
        {
            ViewDataContainer viewData = new ViewDataContainer();

            viewData["Test"] = "XXX";

            object value;
            Type   type;

            Assert.AreEqual("XXX", viewData["Test"]);
            Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

            Assert.IsInstanceOfType(typeof(string), value);
            Assert.AreEqual(typeof(string), type);
            Assert.AreEqual("XXX", value);

            Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));
        }
Example #20
0
         public void TestPropertyOfDictionaryEntry()
         {
             ViewDataContainer viewData = new ViewDataContainer();

             viewData["Test"] = "XXX";

             object value;
             Type type;

             Assert.AreEqual("XXX", viewData["Test"]);
             Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

             Assert.IsInstanceOfType(typeof(string), value);
             Assert.AreEqual(typeof(string), type);
             Assert.AreEqual("XXX", value);

             Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));

         }
Example #21
0
        public void RegisterCss_Basic()
        {
            var viewContext       = new ViewContext();
            var viewDataContainer = new ViewDataContainer();

            var    path           = "path";
            var    priority       = 123;
            var    omitAppVersion = true;
            var    expected       = "<link href=\"path\" rel=\"stylesheet\" type=\"text/css\" />";
            object htmlAttributes = null;

            ScriptManager target = ScriptManager.GetFromViewData(viewDataContainer.ViewData);

            target.RegisterCss(path, priority, htmlAttributes, omitAppVersion);
            var htmlHelper = new HtmlHelper <dynamic>(viewContext, viewDataContainer);
            var result     = htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }
Example #22
0
         public void TestPropertyOfLinkedObject()
         {
             var obj = new {Test = "XXX"};

             ViewDataContainer viewData = new ViewDataContainer(obj);

             object value;
             Type type;

             Assert.AreEqual("XXX", viewData["Test"]);
             Assert.IsTrue(viewData.TryGetValue("Test", out value, out type));

             Assert.IsInstanceOfType(typeof(string),value);
             Assert.AreEqual(typeof(string), type);
             Assert.AreEqual("XXX",value);

             Assert.IsFalse(viewData.TryGetValue("Test2", out value, out type));

         }
        public ActionResult Index()
        {
            if (DKPHistory.history == null)
            {
                return(new ErrorResult("The server failed to initialize."));
            }

            ViewDataContainer viewData = new ViewDataContainer();

            viewData.Set("GuildName", DKPHistory.settings.guildName);

            IEnumerable <LootItem> items = DKPHistory.history.lootItems.Values
                                           .OrderByDescending(item => item.date)
                                           .ThenBy(item => item.name);

            viewData.Set("Loot", JsonConvert.SerializeObject(items));

            IEnumerable <Player> players = DKPHistory.history.playerClasses.Select(kvp => new Player()
            {
                name = kvp.Key, wowclass = kvp.Value
            });

            viewData.Set("Players", JsonConvert.SerializeObject(players));

            if (Debugger.IsAttached)
            {
                viewData.Set("VueScriptName", "vue.js");
            }
            else
            {
                viewData.Set("VueScriptName", "vue.min.js");
            }

            string rootDir = Globals.ApplicationDirectoryBase;

            if (Debugger.IsAttached)
            {
                rootDir += "../../";
            }

            return(new ViewResult(rootDir + "Index.html", viewData));
        }
Example #24
0
        public static HtmlHelper <TModel> ForModel <TModel>(
            HtmlHelper currentHtml,
            TModel model,
            string?htmlFieldPrefix = null)
        {
            if (currentHtml is null)
            {
                throw new ArgumentNullException(nameof(currentHtml));
            }

            ViewDataDictionary currentViewData = currentHtml.ViewData;

            // Cannot call new ViewDataDictionary<TModel>(currentViewData)
            // because currentViewData.Model might be incompatible with TModel

            var tempDictionary = new ViewDataDictionary(currentViewData)
            {
                Model = model
            };

            var container = new ViewDataContainer {
                ViewData = new ViewDataDictionary <TModel>(tempDictionary)
                {
                    // setting new TemplateInfo clears VisitedObjects cache
                    TemplateInfo = new TemplateInfo {
                        HtmlFieldPrefix = currentViewData.TemplateInfo.HtmlFieldPrefix
                    }
                }
            };

            if (!String.IsNullOrEmpty(htmlFieldPrefix))
            {
                TemplateInfo templateInfo = container.ViewData.TemplateInfo;
                templateInfo.HtmlFieldPrefix = templateInfo.GetFullHtmlFieldName(htmlFieldPrefix);
            }

            // new ViewContext resets FormContext
            ViewContext newViewContext = currentHtml.ViewContext.Clone(viewData: container.ViewData);

            return(currentHtml.Clone <TModel>(newViewContext, container));
        }
Example #25
0
        public static YKNTypedWidgetFactory <TModel> YKN <TModel>(this HtmlHelper helper)
            where TModel : class, new()
        {
            var viewData        = helper.ViewDataContainer.ViewData;
            var viewContext     = helper.ViewContext;
            var routeCollection = helper.RouteCollection;

            var newViewData = new ViewDataDictionary(viewData)
            {
                Model = new TModel()
            };
            var newViewContext = new ViewContext(
                viewContext.Controller.ControllerContext,
                viewContext.View,
                newViewData,
                viewContext.TempData,
                viewContext.Writer);
            var viewDataContainer = new ViewDataContainer(newViewContext.ViewData);

            return(new YKNTypedWidgetFactory <TModel>(new HtmlHelper <TModel>(newViewContext, viewDataContainer, routeCollection)));
        }
        public void RegisterCss_Patch()
        {
            var path = "path";
            var priority = 123;
            var omitAppVersion = true;
            object htmlAttributes = null;

            var viewContext = new ViewContext();
            var viewDataContainer = new ViewDataContainer();
            var scriptManager = ScriptManager.GetFromViewData(viewDataContainer.ViewData);
            scriptManager.RegisterCss(path, priority, htmlAttributes, omitAppVersion);
            var htmlHelper = new HtmlHelper<dynamic>(viewContext, viewDataContainer);
            var expected = "<!--[if lte IE 9]>" + htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim() + "<![endif]-->";

            var viewContext2 = new ViewContext();
            var viewDataContainer2 = new ViewDataContainer();
            var scriptManager2 = ScriptManager.GetFromViewData(viewDataContainer2.ViewData);
            scriptManager2.RegisterCss(path, priority, htmlAttributes, omitAppVersion, patchCondition: "lte IE 9");
            var htmlHelper2 = new HtmlHelper<dynamic>(viewContext2, viewDataContainer2);
            var result = htmlHelper2.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }
Example #27
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <typeparam name="TList"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="expression"></param>
        /// <param name="items"></param>
        /// <param name="template"></param>
        /// <returns></returns>
        /// <example>
        /// @Html.ForCollection(x => x.Users, Model.Users,
        ///     @<div>
        ///         @using(var property = item.BeginProperty(x => x.Username))
        ///         {
        ///             <input type="text" id="@property.ID" name="@property.Name" value="@property.Value" >
        ///         }
        ///     </div>
        /// )
        /// </example>
        public static HelperResult ForCollection <TModel, TProperty, TList>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, IEnumerable <TList> items, Func <HtmlCollectionContext <TList>, HelperResult> template)
        {
            return(new HelperResult(writer =>
            {
                ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
                string expressionText = ExpressionHelper.GetExpressionText(expression);
                string name = htmlHelper.ViewData.TemplateInfo.GetFullHtmlFieldName(expressionText);

                int i = 0;
                foreach (var item in items)
                {
                    ViewDataDictionary viewData = new ViewDataDictionary(htmlHelper.ViewDataContainer.ViewData);
                    viewData.Model = item;
                    viewData.TemplateInfo = new TemplateInfo()
                    {
                        HtmlFieldPrefix = $"{name}[{i}]"
                    };

                    ViewContext viewContext = new ViewContext(
                        htmlHelper.ViewContext.Controller.ControllerContext,
                        htmlHelper.ViewContext.View,
                        viewData,
                        htmlHelper.ViewContext.TempData,
                        htmlHelper.ViewContext.Writer
                        );

                    ViewDataContainer container = new ViewDataContainer(viewData);
                    HtmlHelper <TList> listHelper = new HtmlHelper <TList>(viewContext, container);
                    HtmlCollectionContext <TList> context = new HtmlCollectionContext <TList>(listHelper, item);

                    template(context).WriteTo(writer);

                    i++;
                }
            }));
        }
		/// <summary>
		/// Creates a new IViewDataContainer but with a filtered ModelState
		/// </summary>
		/// <param name="container"></param>
		/// <param name="prefix"></param>
		/// <returns></returns>
		public static IViewDataContainer FilterContainer(this IViewDataContainer container, string prefix)
		{
			var newContainer = new ViewDataContainer();
			newContainer.ViewData.ModelState.Merge(container.ViewData.ModelState, prefix);
			return newContainer;
		}
Example #29
0
        public void Render(ViewContext viewContext, TextWriter writer)
        {
            string pagePath = viewContext.HttpContext.Server.MapPath(this.ViewPath);

            CompiledPage cpage = null;

            if (_scriptCache.ContainsKey(pagePath))
            {
                cpage = _scriptCache[pagePath];
                //don't use it if updated
                if (cpage.CompileTime < File.GetLastWriteTime(pagePath))
                {
                    cpage = null;
                }
            }

            if (cpage == null)
            {
                try
                {
                    cpage = aspHost.ProcessPageFromFile(pagePath);
                    _scriptCache[pagePath] = cpage;
                }
                catch (VBScriptCompilerException ex)
                {
                    AspHelper.RenderError(writer, ex);
                    return;
                }
            }

            ScriptScope responseScope = aspHost.CreateScope();
            HttpContext context       = HttpContext.Current;

            responseScope.SetVariable("context", context);
            responseScope.SetVariable("request", context.Request);
            responseScope.SetVariable("session", context.Session);
            responseScope.SetVariable("server", context.Server);
            responseScope.SetVariable("application", context.Application);
            //responseScope.SetVariable("response", new AspResponse(context));

            responseScope.SetVariable("writer", writer);
            responseScope.SetVariable("response", writer);

            responseScope.SetVariable("viewcontext", viewContext);
            responseScope.SetVariable("tempdata", viewContext.TempData);

            ViewDataDictionary viewData = viewContext.ViewData;

            responseScope.SetVariable("viewdata", viewData);
            responseScope.SetVariable("model", viewData.Model);

            ViewDataContainer viewDataContainer = new ViewDataContainer(viewData);

            responseScope.SetVariable("ajax", new AjaxHelper(viewContext, viewDataContainer));
            responseScope.SetVariable("html", new HtmlHelper(viewContext, viewDataContainer));
            responseScope.SetVariable("url", new UrlHelper(viewContext.RequestContext));

            //responseScope.SetVariable("err", new Microsoft.VisualBasic.ErrObject());
            //Used to get the literals
            responseScope.SetVariable("literals", cpage.Literals);

            try
            {
                object o = cpage.Code.Execute(responseScope);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void RenderGlobalJavascript_NotEncodeQuotes()
        {
            var viewContext = new ViewContext();
            var viewDataContainer = new ViewDataContainer();

            var expected = "<script type=\"text/javascript\">window.variable = \"value\";</script>";

            var scriptManager = ScriptManager.GetFromViewData(viewDataContainer.ViewData);
            scriptManager.RegisterGlobalJavascript("variable", "value" );
            var htmlHelper = new HtmlHelper<dynamic>(viewContext, viewDataContainer);
            var result = htmlHelper.RenderScriptManagerEntries().ToHtmlString().Trim();

            Assert.AreEqual(result, expected);
        }