WHAT IS ACTIONBUTTON IN MVC?

Royce Roy

Total Post:149

Points:1043
Posted by  Royce Roy
 1091  View(s)
Ratings:
Rate this:
Has anyone written one? I want it to behave like a link but look like a button. A form with a single button wont do it has I don't want any POST.
  1. Kamlakar Singh

    Post:194

    Points:1396
    Re: What is ActionButton in mvc?

    Submit button:


    <form method="get" action="/myController/myAction/">

        <input type="submit" value="button text goes here" />

    </form>

    In response to cdmckay's answer, here's an alternative code that uses the TagBuilder class instead of a regular StringBuilder to build the form, mostly for clarity.

    using System.Web.Mvc;

    using System.Web.Mvc.Html;

    using System.Web.Routing;

     

    namespace MvcApplication1

    {

        public static class HtmlExtensions

        {

            public static string ActionButton(this HtmlHelper helper, string value,

                                  string action, string controller, object routeValues)

            {

                var a = (new UrlHelper(helper.ViewContext.RequestContext))

                            .Action(action, controller, routeValues);

     

                var form = new TagBuilder("form");

                form.Attributes.Add("method", "get");

                form.Attributes.Add("action", a);

     

                var input = new TagBuilder("input");

                input.Attributes.Add("type", "submit");

                input.Attributes.Add("value", value);

     

                form.InnerHtml = input.ToString(TagRenderMode.SelfClosing);

     

                return form.ToString(TagRenderMode.Normal);

            }

        }

    }

     I am aware that there might be quite a lot of overhead in this code, but I am expecting that you won't need to run it a lot of times on each page. In case you do, there is probably a bunch of optimizations that you could do.

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!