public void OnFailureProperty() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            MemberHelper.TestStringProperty(options, "OnFailure", String.Empty);
        }
        public void HttpMethodProperty() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            MemberHelper.TestStringProperty(options, "HttpMethod", String.Empty, false, true);
        }
        public void OnSuccessProperty() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            MemberHelper.TestStringProperty(options, "OnSuccess", String.Empty, false, true);
        }
        public void InsertionModeProperty() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            MemberHelper.TestEnumProperty(options, "InsertionMode", InsertionMode.Replace, false);
        }
示例#5
0
        public void InsertionModePropertyExceptionText()
        {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            Assert.ThrowsArgumentOutOfRange(
                delegate { options.InsertionMode = (InsertionMode)4; },
                "value",
                @"Specified argument was out of the range of valid values.");
        }
        public void InsertionModeUnobtrusiveTests(InsertionMode mode, string expected)
        {
            // Arrange
            AjaxOptions options = new AjaxOptions { InsertionMode = mode };

            // Act
            string result = options.InsertionModeUnobtrusive;
            
            // Assert
            Assert.Equal(expected, result);
        }
        public void InsertionModePropertyExceptionText() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            ExceptionHelper.ExpectArgumentOutOfRangeException(
                delegate {
                    options.InsertionMode = (InsertionMode)4;
                },
                "value",
                "The value '4' is outside the valid range of the enumeration type 'System.Web.Mvc.Ajax.InsertionMode'.\r\nParameter name: value");
        }
        public void ActionLinkAnonymousValues() {
            // Arrange
            AjaxHelper helper = GetAjaxHelper();
            object values = new { controller = "Controller" };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            string actionLink = helper.ActionLink("Some Text", "Action", values, options);

            // Assert
            Assert.AreEqual(@"<a href=""" + HtmlHelperTest.AppPathModifier + @"/app/Controller/Action"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'update-div' });"">Some Text</a>", actionLink);
        }
示例#9
0
        public void InsertionModePropertyExceptionText() {
            // Arrange
            AjaxOptions options = new AjaxOptions();

            // Act & Assert
            ExceptionHelper.ExpectArgumentOutOfRangeException(
                delegate {
                    options.InsertionMode = (InsertionMode)4;
                },
                "value",
                @"Specified argument was out of the range of valid values.
Parameter name: value");
        }
        public void DisposeWritesClosingFormTag() {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper();
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };
            StringWriter writer = new StringWriter();
            ajaxHelper.ViewContext.Writer = writer;

            // Act
            IDisposable form = ajaxHelper.BeginForm("Action", "Controller", ajaxOptions);
            form.Dispose();

            // Assert
            Assert.IsTrue(writer.ToString().EndsWith("</form>"));
        }
示例#11
0
        public PagerBuilder(HtmlHelper htmlHelper, AjaxHelper ajaxHelper, String actionName, String controllerName, int noOfPages, int pageIndex, PagerOptions pagerOptions, String routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<String, object> htmlAttributes)
        {
            _msAjaxPaging = (default(AjaxHelper) != ajaxHelper);

            if (actionName.IsNullOrEmpty())
            {
                actionName = _msAjaxPaging
                    ? (String) ajaxHelper.ViewContext.RouteData.Values["action"]
                    : (String) htmlHelper.ViewContext.RouteData.Values["action"];
            }
            if (controllerName.IsNullOrEmpty())
            {
                controllerName = _msAjaxPaging
                    ? (String) ajaxHelper.ViewContext.RouteData.Values["controller"]
                    : (String) htmlHelper.ViewContext.RouteData.Values["controller"];
            }

            if (null == pagerOptions) pagerOptions = new PagerOptions();

            _htmlHelper = htmlHelper;
            _ajaxHelper = ajaxHelper;
            _actionName = actionName;
            _controllerName = controllerName;
            _NoOfPages = noOfPages;
            _pageIndex = pageIndex;
            _pagerOptions = pagerOptions;
            _routeName = routeName;
            _routeValues = routeValues;
            _ajaxOptions = ajaxOptions;
            _htmlAttributes = htmlAttributes;

            // start page index
            _startPageIndex = pageIndex - (pagerOptions.NumericPagerItemCount / 2);
            if (_startPageIndex + pagerOptions.NumericPagerItemCount > _NoOfPages)
                _startPageIndex = _NoOfPages + 1 - pagerOptions.NumericPagerItemCount;
            if (_startPageIndex < 1) _startPageIndex = 1;

            // end page index
            _endPageIndex = _startPageIndex + _pagerOptions.NumericPagerItemCount - 1;
            if (_endPageIndex > _NoOfPages) _endPageIndex = _NoOfPages;
        }
示例#12
0
        public static MvcHtmlString RawActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var repID = Guid.NewGuid().ToString();
            var lnk   = ajaxHelper.ActionLink(repID, actionName, controllerName, routeValues, ajaxOptions, htmlAttributes);

            return(MvcHtmlString.Create(lnk.ToString().Replace(repID, linkText)));
        }
        public void BeginRouteFormTypedValuesAndAttributes()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: false);
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "method", "get" }, { "foo_bar", "baz_quux" } };
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };
            RouteValueDictionary values = new RouteValueDictionary();
            StringWriter writer = new StringWriter();
            ajaxHelper.ViewContext.Writer = writer;

            // Act
            IDisposable form = ajaxHelper.BeginRouteForm("namedroute", values, ajaxOptions, htmlAttributes);

            // Assert
            Assert.Equal(@"<form action=""" + MvcHelper.AppPathModifier + @"/app/named/home/oldaction"" foo_bar=""baz_quux"" method=""get"" onclick=""Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));"" onsubmit=""Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;some-id&#39; });"">", writer.ToString());
        }
示例#14
0
 //Microsoft Ajax pager builder
 public PagerBuilder(AjaxHelper ajaxHelper, String actionName, String controllerName, int noOfPages, int pageIndex, PagerOptions pagerOptions, String routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<String, object> htmlAttributes)
     : this(null, ajaxHelper, actionName, controllerName, noOfPages, pageIndex, pagerOptions, routeName, routeValues, ajaxOptions, htmlAttributes)
 {
 }
示例#15
0
        internal PagerBuilder(HtmlHelper html, AjaxHelper ajax, string actionName, string controllerName,
                              int totalPageCount, int pageIndex, PagerOptions pagerOptions, string routeName, RouteValueDictionary routeValues,
                              AjaxOptions ajaxOptions, IDictionary <string, object> htmlAttributes)
        {
            _msAjaxPaging = (ajax != null);
            if (String.IsNullOrEmpty(actionName))
            {
                if (ajax != null)
                {
                    actionName = (string)ajax.ViewContext.RouteData.Values["action"];
                }
                else
                {
                    actionName = (string)html.ViewContext.RouteData.Values["action"];
                }
            }
            if (String.IsNullOrEmpty(controllerName))
            {
                if (ajax != null)
                {
                    controllerName = (string)ajax.ViewContext.RouteData.Values["controller"];
                }
                else
                {
                    controllerName = (string)html.ViewContext.RouteData.Values["controller"];
                }
            }
            if (pagerOptions == null)
            {
                pagerOptions = new PagerOptions();
            }

            _html           = html;
            _ajax           = ajax;
            _actionName     = actionName;
            _controllerName = controllerName;
            if (pagerOptions.MaxPageIndex == 0 || pagerOptions.MaxPageIndex > totalPageCount)
            {
                _totalPageCount = totalPageCount;
            }
            else
            {
                _totalPageCount = pagerOptions.MaxPageIndex;
            }
            _pageIndex      = pageIndex;
            _pagerOptions   = pagerOptions;
            _routeName      = routeName;
            _routeValues    = routeValues;
            _ajaxOptions    = ajaxOptions;
            _htmlAttributes = htmlAttributes;

            // start page index
            _startPageIndex = pageIndex - (pagerOptions.NumericPagerItemCount / 2);
            if (_startPageIndex + pagerOptions.NumericPagerItemCount > _totalPageCount)
            {
                _startPageIndex = _totalPageCount + 1 - pagerOptions.NumericPagerItemCount;
            }
            if (_startPageIndex < 1)
            {
                _startPageIndex = 1;
            }

            // end page index
            _endPageIndex = _startPageIndex + _pagerOptions.NumericPagerItemCount - 1;
            if (_endPageIndex > _totalPageCount)
            {
                _endPageIndex = _totalPageCount;
            }
        }
        public void RouteLinkNamedRouteAnonymousValuesAndAttributes()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: false);
            object values = new
            {
                action = "Action",
                controller = "Controller"
            };

            object htmlAttributes = new
            {
                foo = "bar",
                baz = "quux",
                foo_bar = "baz_quux"
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", values, options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" foo=""bar"" foo-bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/named/Controller/Action"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;update-div&#39; });"">Some Text</a>", actionLink.ToHtmlString());
        }
        public void DisposeWritesClosingFormTag() {
            // Arrange
            Mock<HttpResponseBase> mockResponse = new Mock<HttpResponseBase>(MockBehavior.Strict);
            AjaxHelper ajaxHelper = GetAjaxHelper(mockResponse);
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };

            // Arrange expectations
            mockResponse.Expect(response => response.Write(AjaxFormWithTargetId)).Verifiable();
            mockResponse.Expect(response => response.Write(AjaxFormClose)).Verifiable();

            // Act
            IDisposable form = ajaxHelper.BeginForm("Action", "Controller", ajaxOptions);
            form.Dispose();

            // Assert
            mockResponse.Verify();
        }
示例#18
0
        public static MvcHtmlString AjaxPager(this HtmlHelper html, int totalItemCount, int pageSize, int pageIndex, string actionName, string controllerName,
                                              string routeName, PagerOptions pagerOptions, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary <string, object> htmlAttributes)
        {
            if (pagerOptions == null)
            {
                pagerOptions = new PagerOptions();
            }
            pagerOptions.UseJqueryAjax = true;

            var totalPageCount = (int)Math.Ceiling(totalItemCount / (double)pageSize);
            var builder        = new PagerBuilder(html, actionName, controllerName, totalPageCount, pageIndex, pagerOptions,
                                                  routeName, routeValues, ajaxOptions, htmlAttributes);

            return(builder.RenderPager());
        }
        public void RouteLinkTypedValues()
        {
            // Arrange
            AjaxHelper helper = GetAjaxHelper(unobtrusiveJavaScript: false);
            RouteValueDictionary values = new RouteValueDictionary
            {
                { "controller", "Controller" },
                { "action", "Action" }
            };

            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = helper.RouteLink("Some Text", values, options);

            // Assert
            Assert.Equal(@"<a href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;update-div&#39; });"">Some Text</a>", actionLink.ToHtmlString());
        }
示例#20
0
 public MvcHtmlString AjaxLink(String actionName, String controllerName, object routeValues, AjaxOptions ajaxOptions)
 {
     return(AjaxLink(actionName, controllerName, routeValues, ajaxOptions, null));
 }
示例#21
0
        public MvcHtmlString AjaxLink(String actionName, String controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var actionLink = dataWebViewPage.Ajax.ActionLink("#", actionName, controllerName, routeValues, ajaxOptions, htmlAttributes).ToString();

            actionLink = actionLink.Replace("data-ajax=\"true\"", "data-ajax-link=\"true\"");
            return(MvcHtmlString.Create(actionLink.Substring(3, actionLink.Length - 9)));
        }
示例#22
0
 public MvcHtmlString AjaxLink(String actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
 {
     return(AjaxLink(actionName, null, routeValues, ajaxOptions, htmlAttributes));
 }
示例#23
0
 public MvcHtmlString AjaxLink(String actionName, String controllerName, AjaxOptions ajaxOptions)
 {
     return(AjaxLink(actionName, controllerName, null, ajaxOptions, null));
 }
示例#24
0
 /// <summary>
 /// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
 /// </summary>
 /// <param name="ajaxOptions">Ajax options that will be used to generate the unobstrusive tags on the link</param>
 /// <returns>A default instance of PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
 public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(AjaxOptions ajaxOptions)
 {
     return(EnableUnobtrusiveAjaxReplacing(new PagedListRenderOptions(), ajaxOptions));
 }
        public void ActionLinkControllerTypedValues_Unobtrusive()
        {
            // Arrange
            AjaxHelper helper = GetAjaxHelper(unobtrusiveJavaScript: true);
            RouteValueDictionary values = new RouteValueDictionary
            {
                { "id", 5 }
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = helper.ActionLink("Some Text", "Action", "Controller", values, options);

            // Assert
            Assert.Equal(@"<a data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#update-div"" href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action/5"">Some Text</a>", actionLink.ToHtmlString());
        }
示例#26
0
 public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, AjaxOptions ajaxOptions)
 {
     if (pagedList == null)
     {
         return(AjaxPager(html, (PagerOptions)null, null));
     }
     return(AjaxPager(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, null, null, ajaxOptions,
                      null));
 }
        public void ActionLinkWithOptions_Unobtrusive()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: true);
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "some-id" };

            // Act
            MvcHtmlString actionLink = ajaxHelper.ActionLink("linkText", "Action", "Controller", options);

            // Assert
            Assert.Equal(@"<a data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#some-id"" href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action"">linkText</a>", actionLink.ToHtmlString());
        }
示例#28
0
 public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions, object htmlAttributes)
 {
     if (pagedList == null)
     {
         return(AjaxPager(html, pagerOptions, new RouteValueDictionary(htmlAttributes)));
     }
     return(AjaxPager(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null,
                      ajaxOptions, htmlAttributes));
 }
        public void RouteLinkNamedRouteTypedAttributes()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: false);
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "foo", "bar" }, { "baz", "quux" }, { "foo_bar", "baz_quux" } };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" foo=""bar"" foo_bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/named/home/oldaction"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;update-div&#39; });"">Some Text</a>", actionLink.ToHtmlString());
        }
示例#30
0
 public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, string routeName, object routeValues, PagerOptions pagerOptions, AjaxOptions ajaxOptions)
 {
     if (pagedList == null)
     {
         return(AjaxPager(html, pagerOptions, null));
     }
     return(AjaxPager(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, routeName, pagerOptions, routeValues, ajaxOptions,
                      null));
 }
        public void RouteLinkNamedRouteTypedValuesAndAttributes() {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper();
            RouteValueDictionary values = new RouteValueDictionary {
                { "controller", "Controller" },
                { "action", "Action" }
            };

            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "foo", "bar" }, { "baz", "quux" } };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            string actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", values, options, htmlAttributes);

            // Assert
            Assert.AreEqual(@"<a baz=""quux"" foo=""bar"" href=""" + HtmlHelperTest.AppPathModifier + @"/app/named/Controller/Action"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'update-div' });"">Some Text</a>", actionLink);
        }
示例#32
0
        public static MvcHtmlString Pager(this AjaxHelper ajax, int totalItemCount, int pageSize, int pageIndex, string actionName, string controllerName,
                                          string routeName, PagerOptions pagerOptions, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary <string, object> htmlAttributes)
        {
            var totalPageCount = (int)Math.Ceiling(totalItemCount / (double)pageSize);
            var builder        = new PagerBuilder(ajax, actionName, controllerName, totalPageCount, pageIndex, pagerOptions,
                                                  routeName, routeValues, ajaxOptions, htmlAttributes);

            return(builder.RenderPager());
        }
        public void RouteFormAnonymousValuesAndAttributes() {
            // Arrange
            Mock<HttpResponseBase> mockResponse = new Mock<HttpResponseBase>(MockBehavior.Strict);
            AjaxHelper ajaxHelper = GetAjaxHelper(mockResponse);
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };
            object htmlAttributes = new { method = "get" };

            // Arrange expectations
            mockResponse.Expect(response => response.Write(AjaxRouteFormWithHtmlAttributes)).Verifiable();

            // Act
            IDisposable form = ajaxHelper.BeginRouteForm("namedroute", null, ajaxOptions, htmlAttributes);

            // Assert
            mockResponse.Verify();
        }
示例#34
0
 public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions)
 {
     return(pagedList == null?Pager(ajax, pagerOptions, null) : Pager(ajax, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex,
                                                                      null, null, null, pagerOptions, null, ajaxOptions, null));
 }
示例#35
0
        /// <summary>
        /// Enables ASP.NET MVC's unobtrusive AJAX feature. An XHR request will retrieve HTML from the clicked page and replace the innerHtml of the provided element ID.
        /// </summary>
        /// <param name="options">The preferred Html.PagedList(...) style options.</param>
        /// <param name="ajaxOptions">The ajax options that will put into the link</param>
        /// <returns>The PagedListRenderOptions value passed in, with unobtrusive AJAX attributes added to the page links.</returns>
        public static PagedListRenderOptions EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions options, AjaxOptions ajaxOptions)
        {
            options.FunctionToTransformEachPageLink = (liTagBuilder, aTagBuilder) =>
            {
                var liClass = liTagBuilder.Attributes.ContainsKey("class") ? liTagBuilder.Attributes["class"] ?? "" : "";
                if (ajaxOptions != null && !liClass.Contains("disabled") && !liClass.Contains("active"))
                {
                    foreach (var ajaxOption in ajaxOptions.ToUnobtrusiveHtmlAttributes())
                    {
                        aTagBuilder.Attributes.Add(ajaxOption.Key, ajaxOption.Value.ToString());
                    }
                }

                liTagBuilder.InnerHtml = aTagBuilder.ToString();
                return(liTagBuilder);
            };
            return(options);
        }
示例#36
0
 public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions, IDictionary <string, object> htmlAttributes)
 {
     if (pagedList == null)
     {
         return(Pager(ajax, pagerOptions, htmlAttributes));
     }
     return(Pager(ajax, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null, ajaxOptions, htmlAttributes));
 }
        public static HtmlString ImageActionLink(this AjaxHelper helper, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes = null, object imgAttributes = null)
        {
            IDictionary <string, object> attributespp = new RouteValueDictionary(imgAttributes);

            // Build up the <img></img> tag...
            var builder = new TagBuilder("img");

            foreach (KeyValuePair <string, object> kvp in attributespp)
            {
                builder.MergeAttribute(kvp.Key, kvp.Value as string);
            }

            string actionLinkText = "NotUsedForPics";

            var link = helper.ActionLink(actionLinkText, actionName, controllerName, routeValues, ajaxOptions);

            string sth = link.ToString().Replace(actionLinkText, builder.ToString(TagRenderMode.SelfClosing));

            return(new HtmlString(sth));
        }
示例#38
0
 public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, string routeName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
 {
     if (pagedList == null)
     {
         return(Pager(ajax, null, new RouteValueDictionary(htmlAttributes)));
     }
     return(Pager(ajax, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, routeName, null, routeValues, ajaxOptions, htmlAttributes));
 }
        public void BeginRouteFormTypedValues_Unobtrusive()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: true);
            AjaxOptions ajaxOptions = new AjaxOptions();
            RouteValueDictionary values = new RouteValueDictionary();
            StringWriter writer = new StringWriter();
            ajaxHelper.ViewContext.Writer = writer;

            // Act
            IDisposable form = ajaxHelper.BeginRouteForm("namedroute", values, ajaxOptions);

            // Assert
            Assert.Equal(@"<form action=""" + MvcHelper.AppPathModifier + @"/app/named/home/oldaction"" data-ajax=""true"" method=""post"">", writer.ToString());
        }
 public Pager(ViewContext viewContext, int pageSize, int currentPage, int totalItemCount, RouteValueDictionary valuesDictionary, AjaxOptions ajaxOptions)
 {
     this.viewContext    = viewContext;
     this.pageSize       = pageSize;
     this.currentPage    = currentPage;
     this.totalItemCount = totalItemCount;
     this.linkWithoutPageValuesDictionary = valuesDictionary;
     this.ajaxOptions = ajaxOptions;
 }
        public void BeginRouteFormTypedValuesAndAttributes_Unobtrusive()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: true);
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "method", "get" }, { "foo_bar", "baz_quux" } };
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };
            RouteValueDictionary values = new RouteValueDictionary();
            StringWriter writer = new StringWriter();
            ajaxHelper.ViewContext.Writer = writer;

            // Act
            IDisposable form = ajaxHelper.BeginRouteForm("namedroute", values, ajaxOptions, htmlAttributes);

            // Assert
            Assert.Equal(@"<form action=""" + MvcHelper.AppPathModifier + @"/app/named/home/oldaction"" data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#some-id"" foo_bar=""baz_quux"" method=""get"">", writer.ToString());
        }
示例#42
0
        public static MvcHtmlString NormalizedActionLink(this AjaxHelper ajaxHelper, string linkText, ActionResult result, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var normalizedHtmlAttributes = new RouteValueDictionary();
            var originHtmlAttributes     = htmlAttributes.Convert();

            foreach (var attribute in originHtmlAttributes)
            {
                if (attribute.Value != null)
                {
                    normalizedHtmlAttributes.Add(attribute.Key, attribute.Value);
                }
            }

            return(ajaxHelper.RouteLink(linkText, result.GetRouteValueDictionary(), ajaxOptions, normalizedHtmlAttributes));
        }
        public void ActionLinkControllerTypedValuesAndAttributes()
        {
            // Arrange
            AjaxHelper helper = GetAjaxHelper(unobtrusiveJavaScript: false);
            RouteValueDictionary values = new RouteValueDictionary
            {
                { "id", 5 }
            };
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object>
            {
                { "foo", "bar" },
                { "baz", "quux" },
                { "foo_bar", "baz_quux" }
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = helper.ActionLink("Some Text", "Action", "Controller", values, options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" foo=""bar"" foo_bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action/5"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;update-div&#39; });"">Some Text</a>", actionLink.ToHtmlString());
        }
 public static MvcHtmlString ActionButton(this AjaxHelper ajaxHelper, ButtonParameters buttonParameters, string actionName, AjaxOptions ajaxOptions)
 {
     return(ActionButton(ajaxHelper, buttonParameters, new ActionParameters(actionName), ajaxOptions));
 }
        public void RouteLinkAnonymousValuesAndAttributes_Unobtrusive()
        {
            // Arrange
            AjaxHelper helper = GetAjaxHelper(unobtrusiveJavaScript: true);
            object htmlAttributes = new
            {
                foo = "bar",
                baz = "quux",
                foo_bar = "baz_quux"
            };
            object values = new
            {
                action = "Action",
                controller = "Controller"
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = helper.RouteLink("Some Text", values, options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#update-div"" foo=""bar"" foo-bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action"">Some Text</a>", actionLink.ToHtmlString());
        }
        public static MvcHtmlString ActionButton(this AjaxHelper ajaxHelper, ButtonParameters buttonParameters, ActionParameters actionParameters, AjaxOptions ajaxOptions)
        {
            var htmlStr = ajaxHelper.ActionLink("REPLACE", actionParameters.Action, actionParameters.Controller, actionParameters.RouteValues, ajaxOptions).ToHtmlString();

            return(buttonParameters.ButtonConstructor(htmlStr));
        }
        public void RouteLinkTypedValuesAndAttributes_Unobtrusive()
        {
            // Arrange
            AjaxHelper helper = GetAjaxHelper(unobtrusiveJavaScript: true);
            RouteValueDictionary values = new RouteValueDictionary
            {
                { "controller", "Controller" },
                { "action", "Action" }
            };
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object>
            {
                { "foo", "bar" },
                { "baz", "quux" },
                { "foo_bar", "baz_quux" }
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = helper.RouteLink("Some Text", values, options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#update-div"" foo=""bar"" foo_bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/Controller/Action"">Some Text</a>", actionLink.ToHtmlString());
        }
示例#48
0
        private static IHtmlString IconActionLinkBase(this AjaxHelper helper, string iconClass, string linkText, string actionName, string controlerName, object routeValues, AjaxOptions ajaxOptions, object linkHtmlAttribute)
        {
            string link = "";

            controlerName = controlerName == "" ? null : controlerName;

            link = helper.ActionLink("[replaceme]", actionName, controlerName, routeValues, ajaxOptions).ToHtmlString();

            if (controlerName == null)
            {
                link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions, linkHtmlAttribute).ToHtmlString();
            }
            else
            {
                link = helper.ActionLink("[replaceme]", actionName, controlerName, routeValues, ajaxOptions, linkHtmlAttribute).ToHtmlString();
            }

            var iconHtml = IconBuilder(iconClass) + linkText;

            return(MvcHtmlString.Create(link.Replace("[replaceme]", iconHtml)));
        }
        public void RouteLinkNamedRouteTypedAttributes_Unobtrusive()
        {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper(unobtrusiveJavaScript: true);
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "foo", "bar" }, { "baz", "quux" }, { "foo_bar", "baz_quux" } };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            MvcHtmlString actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", options, htmlAttributes);

            // Assert
            Assert.Equal(@"<a baz=""quux"" data-ajax=""true"" data-ajax-mode=""replace"" data-ajax-update=""#update-div"" foo=""bar"" foo_bar=""baz_quux"" href=""" + MvcHelper.AppPathModifier + @"/app/named/home/oldaction"">Some Text</a>", actionLink.ToHtmlString());
        }
        public static MvcHtmlString ContextedActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var routeValuesDict = ToRouteValueDictionary(routeValues);

            AppendContext(ajaxHelper, routeValuesDict);

            var htmlAttributesDict = ToRouteValueDictionary(htmlAttributes);

            return(ajaxHelper.ActionLink(linkText, actionName, controllerName, routeValuesDict, ajaxOptions, htmlAttributesDict));
        }
        public void RouteLinkNamedRouteAnonymousAttributes() {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper();
            object htmlAttributes = new {
                foo = "bar",
                baz = "quux"
            };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            string actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", options, htmlAttributes);

            // Assert
            Assert.AreEqual(@"<a baz=""quux"" foo=""bar"" href=""" + HtmlHelperTest.AppPathModifier + @"/app/named/home/oldaction"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'update-div' });"">Some Text</a>", actionLink);
        }
        public static MvcHtmlString ContextedActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, AjaxOptions ajaxOptions)
        {
            var routeValuesWithContext = AppendContext(ajaxHelper, new RouteValueDictionary());

            return(ajaxHelper.ActionLink(linkText, actionName, routeValuesWithContext, ajaxOptions));
        }
        public void RouteLinkWithHostName() {
            // Arrange
            AjaxHelper ajaxHelper = GetAjaxHelper();
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "foo", "bar" }, { "baz", "quux" } };
            AjaxOptions options = new AjaxOptions { UpdateTargetId = "update-div" };

            // Act
            string actionLink = ajaxHelper.RouteLink("Some Text", "namedroute", null, "baz.bar.foo", null, null, options, htmlAttributes);

            // Assert
            Assert.AreEqual(@"<a baz=""quux"" foo=""bar"" href=""http://baz.bar.foo" + HtmlHelperTest.AppPathModifier + @"/app/named/home/oldaction"" onclick=""Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'update-div' });"">Some Text</a>", actionLink);
        }
        public static MvcForm BeginContextedForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var form = ajaxHelper.BeginForm(actionName, controllerName, ajaxOptions, htmlAttributes);

            ajaxHelper.ViewContext.Writer.Write($"<input name ='context' type='hidden' value='{ajaxHelper.ViewData["context"].ToJson()}'>");
            return(form);
        }
        public static MvcHtmlString IconActionLink(this AjaxHelper helper, string icon, string text, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
        {
            var builder = new TagBuilder("i");

            builder.MergeAttribute("class", icon);
            var link = helper.ActionLink("[replaceme] " + text, actionName, controllerName, routeValues, ajaxOptions, htmlAttributes).ToHtmlString();

            return(new MvcHtmlString(link.Replace("[replaceme]", builder.ToString())));
        }
示例#56
0
        //
        public static HtmlString linkOrder(this HtmlHelper helper, string texto, string campoOrder, AjaxOptions Options)
        {
            var ORequest = HttpContext.Current.Request;

            string[] keys = ORequest.QueryString.AllKeys.ToArray();

            string iconeOrder = "";

            RouteValueDictionary RotaParametros = new RouteValueDictionary();

            if (keys.Contains("orderCampo"))
            {
                string orderBusca = ORequest.QueryString["orderCampo"];
                if (orderBusca == campoOrder || orderBusca == String.Concat(campoOrder, "_desc"))
                {
                    if (orderBusca.Contains("_desc"))
                    {
                        iconeOrder = "fa fa-angle-double-down";
                    }
                    else
                    {
                        campoOrder = String.Concat(campoOrder, "_desc");
                        iconeOrder = "fa fa-angle-double-up";
                    }
                }
            }

            RotaParametros.Add("orderCampo", campoOrder);

            foreach (string param in keys)
            {
                if (ORequest.QueryString[param] != null && param != "orderCampo")
                {
                    string valor = ORequest.QueryString[param];
                    RotaParametros.Add(param, valor);
                }
            }

            var urlHelper = new UrlHelper(ORequest.RequestContext);

            string urlOrder = urlHelper.Action(null, null, RotaParametros);

            string linkOrder;

            if (Options == null)
            {
                linkOrder = String.Concat("<a href=\"", urlOrder, "\" class=\"text-white\"><i class=\"", iconeOrder, "\"></i> ", texto, "</a>");

                return(new HtmlString(linkOrder));
            }

            linkOrder = String.Concat("<a data-ajax=\"true\" data-ajax-method=\"GET\" data-ajax-update=\"", Options.UpdateTargetId, "\"  href=\"", urlOrder, "\"><i class=\"", iconeOrder, "\"></i> ", texto, "</a>");

            return(new HtmlString(linkOrder));
        }
        public void RouteFormTypedValuesAndAttributes() {
            // Arrange
            Mock<HttpResponseBase> mockResponse = new Mock<HttpResponseBase>(MockBehavior.Strict);
            AjaxHelper ajaxHelper = GetAjaxHelper(mockResponse);
            Dictionary<string, object> htmlAttributes = new Dictionary<string, object> { { "method", "get" } };
            AjaxOptions ajaxOptions = new AjaxOptions { UpdateTargetId = "some-id" };
            RouteValueDictionary values = new RouteValueDictionary ();

            // Arrange expectations
            mockResponse.Expect(response => response.Write(AjaxRouteFormWithHtmlAttributes)).Verifiable();

            // Act
            IDisposable form = ajaxHelper.BeginRouteForm("namedroute", values, ajaxOptions, htmlAttributes);

            // Assert
            mockResponse.Verify();
        }
示例#58
0
        public static MvcHtmlString AjaxPageLinks(this HtmlHelper html, PagingInfo pagingInfo, int sizePatginatonBar, Func <int, string> pageUrl, AjaxOptions optAjax)
        {
            //if (html == null) throw new ArgumentNullException("html");
            var ajaxAttr = new RouteValueDictionary()
            {
                { "data-ajax", "true" },
                { "data-ajax-method", optAjax.HttpMethod },
                { "data-ajax-mode", optAjax.InsertionMode.ToString() },
                { "data-ajax-update", optAjax.UpdateTargetId },
            };
            StringBuilder result = new StringBuilder();

            //for best view paging (selection always in middle)
            int startIndex = (int)Math.Max(1,
                                           Math.Max(0, pagingInfo.CurrentPage - (int)Math.Round((double)sizePatginatonBar / 2)) -
                                           Math.Max(0, Math.Round((double)(pagingInfo.CurrentPage - (pagingInfo.TotalPages - sizePatginatonBar)) / 2)));

            int endIndex = Math.Min(pagingInfo.TotalPages, startIndex + sizePatginatonBar);

            #region Previos Page
            TagBuilder ulTag = new TagBuilder("ul");
            ulTag.AddCssClass("pagination");
            TagBuilder stliTag = new TagBuilder("li");
            if (pagingInfo.CurrentPage == startIndex)
            {
                stliTag.AddCssClass("disabled");
            }
            TagBuilder atag = new TagBuilder("a");
            //retrive url
            atag.MergeAttribute("href", pagingInfo.CurrentPage > 1 ? pageUrl(pagingInfo.CurrentPage - 1) : pageUrl(1));
            atag.MergeAttributes(ajaxAttr);
            atag.MergeAttribute("aria-label", "Previous");

            TagBuilder stspanTag = new TagBuilder("span");
            stspanTag.MergeAttribute("aria-hidden", "true");
            stspanTag.InnerHtml = "&laquo";

            atag.InnerHtml    = stspanTag.ToString();
            stliTag.InnerHtml = atag.ToString();
            //ulTag.InnerHtml = stliTag.ToString();
            //result.Append(ulTag);
            #endregion

            #region PageLinks
            string linkPage = "";
            for (int i = startIndex; i <= endIndex; i++)
            {
                TagBuilder lipageTag = new TagBuilder("li");
                if (i == pagingInfo.CurrentPage)
                {
                    lipageTag.AddCssClass("active");
                }
                //< a data - ajax = "true" data - ajax - method = "Get" data - ajax - mode = "replace" data - ajax - update = "#infoArea" href = "" > ajax </ a >
                TagBuilder apagetag = new TagBuilder("a");
                TagBuilder srSpan   = new TagBuilder("span");
                srSpan.AddCssClass("sr-only");
                srSpan.InnerHtml = "(current)";
                apagetag.MergeAttribute("href", pageUrl(i));
                apagetag.MergeAttributes(ajaxAttr);

                if (i == pagingInfo.CurrentPage)
                {
                    //lipageTag.AddCssClass("active");
                    apagetag.InnerHtml = i + srSpan.ToString();
                }
                apagetag.InnerHtml = i.ToString();

                lipageTag.InnerHtml = apagetag.ToString();
                linkPage            = linkPage + lipageTag;
                //result.Append(lipageTag);
            }
            #endregion

            #region Next Page
            TagBuilder endliTag = new TagBuilder("li");
            if (pagingInfo.CurrentPage == endIndex)
            {
                endliTag.AddCssClass("disabled");
            }
            TagBuilder nexttag = new TagBuilder("a");

            nexttag.MergeAttribute("href", pagingInfo.CurrentPage < pagingInfo.TotalPages ? pageUrl(pagingInfo.CurrentPage + 1) : pageUrl(pagingInfo.TotalPages));
            nexttag.MergeAttributes(ajaxAttr);
            nexttag.MergeAttribute("aria-label", "Next");

            TagBuilder endSpanTag = new TagBuilder("span");
            endSpanTag.MergeAttribute("aria-hidden", "true");
            endSpanTag.InnerHtml = "&raquo";

            nexttag.InnerHtml  = endSpanTag.ToString();
            endliTag.InnerHtml = nexttag.ToString();
            //result.Append(endliTag);
            #endregion

            ulTag.InnerHtml = stliTag + linkPage + endliTag;
            result.Append(ulTag);

            return(MvcHtmlString.Create(result.ToString()));
        }
示例#59
0
        private static IHtmlString ImageActionLinkBase(this AjaxHelper helper, string imageUrl, string altText, string actionName, string controlerName, object routeValues, AjaxOptions ajaxOptions, object imageHtmlAttribute, object linkHtmlAttribute)
        {
            string link = "";

            controlerName = controlerName == "" ? null : controlerName;

            link = helper.ActionLink("[replaceme]", actionName, controlerName, routeValues, ajaxOptions).ToHtmlString();

            if (controlerName == null)
            {
                link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions, linkHtmlAttribute).ToHtmlString();
            }
            else
            {
                link = helper.ActionLink("[replaceme]", actionName, controlerName, routeValues, ajaxOptions, linkHtmlAttribute).ToHtmlString();
            }

            var imgHtml = ImageBuilder(imageUrl, altText, imageHtmlAttribute);

            return(MvcHtmlString.Create(link.Replace("[replaceme]", imgHtml)));
        }
示例#60
0
 public static MvcHtmlString RawActionLink(this AjaxHelper ajaxHelper, string rawHtml, string action, string controller, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
 {
     //string anchor = ajaxHelper.ActionLink("##holder##", action, controller, routeValues, ajaxOptions, htmlAttributes).ToString();
     //return MvcHtmlString.Create(anchor.Replace("##holder##", rawHtml));
     /* Updated code to use a generated guid as from the suggestion of Phillip Haydon */
     string holder = Guid.NewGuid().ToString();
     string anchor = ajaxHelper.ActionLink(holder, action, controller, routeValues, ajaxOptions, htmlAttributes).ToString();
     return MvcHtmlString.Create(anchor.Replace(holder, rawHtml));
 }