public void CommandResolver_Valid_SimpleTest() { var path = new[] { "A[0]" }; var command = "Test(StringToPass, _parent.NumberToPass)"; var testObject = new { A = new[] { new TestA() { StringToPass = "******" } }, NumberToPass = 16 }; var viewRoot = new RedwoodView() { DataContext = testObject }; viewRoot.SetBinding(Validate.TargetProperty, new ValueBindingExpression("_root")); var placeholder = new HtmlGenericControl("div"); placeholder.SetBinding(RedwoodBindableControl.DataContextProperty, new ValueBindingExpression(path[0])); viewRoot.Children.Add(placeholder); var button = new Button(); button.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression(command)); placeholder.Children.Add(button); var resolver = new CommandResolver(); var context = new RedwoodRequestContext() { ViewModel = testObject }; context.ModelState.ValidationTargetPath = KnockoutHelper.GetValidationTargetExpression(button, true); resolver.GetFunction(viewRoot, context, path, command).GetAction()(); Assert.AreEqual(testObject.NumberToPass, testObject.A[0].ResultInt); Assert.AreEqual(testObject.A[0].ResultString, testObject.A[0].ResultString); }
private void DataBind(RedwoodRequestContext context) { Children.Clear(); content = new HtmlGenericControl("ul"); content.SetBinding(DataContextProperty, GetDataSetBinding().Clone()); Children.Add(content); var dataSet = DataSet; if (dataSet != null) { // first button firstLi = new HtmlGenericControl("li"); var firstLink = new LinkButton(); SetButtonContent(context, firstLink, "««", FirstPageTemplate); firstLink.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("GoToFirstPage()")); firstLi.Children.Add(firstLink); content.Children.Add(firstLi); // previous button previousLi = new HtmlGenericControl("li"); var previousLink = new LinkButton(); SetButtonContent(context, previousLink, "«", PreviousPageTemplate); previousLink.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("GoToPreviousPage()")); previousLi.Children.Add(previousLink); content.Children.Add(previousLi); // number fields numbersPlaceholder = new Placeholder(); content.Children.Add(numbersPlaceholder); var i = 0; foreach (var number in dataSet.NearPageIndexes) { var li = new HtmlGenericControl("li"); li.SetBinding(DataContextProperty, new ValueBindingExpression("NearPageIndexes[" + i + "]")); if (number == dataSet.PageIndex) { li.Attributes["class"] = "active"; } var link = new LinkButton() { Text = (number + 1).ToString() }; link.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("_parent.GoToPage(_this)")); li.Children.Add(link); numbersPlaceholder.Children.Add(li); i++; } // next button nextLi = new HtmlGenericControl("li"); var nextLink = new LinkButton(); SetButtonContent(context, nextLink, "»", NextPageTemplate); nextLink.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("GoToNextPage()")); nextLi.Children.Add(nextLink); content.Children.Add(nextLi); // last button lastLi = new HtmlGenericControl("li"); var lastLink = new LinkButton(); SetButtonContent(context, lastLink, "»»", LastPageTemplate); lastLink.SetBinding(ButtonBase.ClickProperty, new CommandBindingExpression("GoToLastPage()")); lastLi.Children.Add(lastLink); content.Children.Add(lastLi); } }