none
Elemento HTML dentro de um ActionLink RRS feed

  • Pergunta

  • Olá, gostaria de saber se é possível criar um elemento HTML dentro de um ActionLink, por exemplo:

    Para criar um link em um menu com ActionLink:

    @Html.ActionLink("Classificação Financeira", "Index", "ClassificacaoFinanceira")

    Mas eu precisa criar um elemento para colocar um figura no menu e se eu for fazer com a tag a ficaria assim:

    <a href="/ClassificacaoFinanceira"><i class="fa fa-bar-chart"></i> Classificação Financeira</a>

    Mas eu gostaria de fazer isso usando o ActionLink, tem como fazer isso?

    terça-feira, 6 de outubro de 2015 14:33

Respostas

  • Use Metodos de Extensão para resolver esse problema

    Assim

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.Mvc.Ajax;
    using System.Reflection;
    using System.Text;
    using System.Text.RegularExpressions;
    namespace System.Web.Mvc
    {
        public static class Methods
        {
            public static String ControllerName(this HtmlHelper HtmlHelper)
            {
                return HtmlHelper.ViewContext.RequestContext.RouteData.Values["controller"].ToString();
            }
            public static String ControllerName(this AjaxHelper AjaxHelper)
            {
                return AjaxHelper.ViewContext.RequestContext.RouteData.Values["controller"].ToString();
            }
            public static String ActionName(this HtmlHelper HtmlHelper)
            {
                return HtmlHelper.ViewContext.RequestContext.RouteData.Values["action"].ToString();
            }
            public static String ActionName(this AjaxHelper AjaxHelper)
            {
                return AjaxHelper.ViewContext.RequestContext.RouteData.Values["action"].ToString();
            }        
            public static IHtmlString Link(this HtmlHelper HtmlHelper, string Description, string ActionName, string Title, params object[] routeValues)
            {
                string routes = string.Empty;
                if (routeValues.Count() > 0)
                {
                    foreach (object route in routeValues)
                    {
                        if (routes == string.Empty)
                        {
                            routes += route;
                        }
                        else
                        {
                            routes += "/" + route;
                        }
                    }
                }
                string _button = string.Format("<a href=\"{0}\" class=\"btn btn-primary\" target=\"_self\" title=\"{1}\"><i class=\"fafa-bar-chart\"></i> {2}</a>",
                    string.Format("/{0}/{1}/{2}", ControllerName(HtmlHelper), ActionName, routes), Title, Description);
                return new HtmlString(_button);
            }
        }
    }

    Na sua View

    @Html.Link("Classificação Financeira", "Index", "Classificação Financeira")


    Fulvio Cezar Canducci Dias


    terça-feira, 6 de outubro de 2015 20:16

Todas as Respostas

  • Use Metodos de Extensão para resolver esse problema

    Assim

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.Mvc.Ajax;
    using System.Reflection;
    using System.Text;
    using System.Text.RegularExpressions;
    namespace System.Web.Mvc
    {
        public static class Methods
        {
            public static String ControllerName(this HtmlHelper HtmlHelper)
            {
                return HtmlHelper.ViewContext.RequestContext.RouteData.Values["controller"].ToString();
            }
            public static String ControllerName(this AjaxHelper AjaxHelper)
            {
                return AjaxHelper.ViewContext.RequestContext.RouteData.Values["controller"].ToString();
            }
            public static String ActionName(this HtmlHelper HtmlHelper)
            {
                return HtmlHelper.ViewContext.RequestContext.RouteData.Values["action"].ToString();
            }
            public static String ActionName(this AjaxHelper AjaxHelper)
            {
                return AjaxHelper.ViewContext.RequestContext.RouteData.Values["action"].ToString();
            }        
            public static IHtmlString Link(this HtmlHelper HtmlHelper, string Description, string ActionName, string Title, params object[] routeValues)
            {
                string routes = string.Empty;
                if (routeValues.Count() > 0)
                {
                    foreach (object route in routeValues)
                    {
                        if (routes == string.Empty)
                        {
                            routes += route;
                        }
                        else
                        {
                            routes += "/" + route;
                        }
                    }
                }
                string _button = string.Format("<a href=\"{0}\" class=\"btn btn-primary\" target=\"_self\" title=\"{1}\"><i class=\"fafa-bar-chart\"></i> {2}</a>",
                    string.Format("/{0}/{1}/{2}", ControllerName(HtmlHelper), ActionName, routes), Title, Description);
                return new HtmlString(_button);
            }
        }
    }

    Na sua View

    @Html.Link("Classificação Financeira", "Index", "Classificação Financeira")


    Fulvio Cezar Canducci Dias


    terça-feira, 6 de outubro de 2015 20:16
  • <a href="@Url.Action("action","controller")"><i class="fa fa-bar-chart"></i> Classificação Financeira</a>

    Sem precisar reinventar a roda!! rsrs

    terça-feira, 6 de outubro de 2015 20:22