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)); }
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)); }
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); }
private string ProcessView(string input, ViewDataContainer ViewData) { ViewResult vr = new ViewResult(); vr.ProcessView(input, ViewData); return(Encoding.UTF8.GetString(vr.Body)); }
/// <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)); }
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)); }
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)); }
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)); }
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); }
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)); }
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); }
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)); }
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); }
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)); }
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)); }
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); }
/// <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; }
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); }