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); }
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); }
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>")); }
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; }
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: 'some-id' });"">", writer.ToString()); }
//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) { }
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: 'update-div' });"">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(); }
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: 'update-div' });"">Some Text</a>", actionLink.ToHtmlString()); }
public MvcHtmlString AjaxLink(String actionName, String controllerName, object routeValues, AjaxOptions ajaxOptions) { return(AjaxLink(actionName, controllerName, routeValues, ajaxOptions, null)); }
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))); }
public MvcHtmlString AjaxLink(String actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes) { return(AjaxLink(actionName, null, routeValues, ajaxOptions, htmlAttributes)); }
public MvcHtmlString AjaxLink(String actionName, String controllerName, AjaxOptions ajaxOptions) { return(AjaxLink(actionName, controllerName, null, ajaxOptions, null)); }
/// <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()); }
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()); }
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: 'update-div' });"">Some Text</a>", actionLink.ToHtmlString()); }
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); }
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(); }
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)); }
/// <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); }
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)); }
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()); }
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: 'update-div' });"">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()); }
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()))); }
// 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(); }
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 = "«"; 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 = "»"; 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())); }
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))); }
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)); }