Действие Image Link на MVC3 Razor с использованием метода Helper - PullRequest
2 голосов
/ 10 февраля 2012

Как это сделать с помощью вспомогательного метода бритвы?

В ответе на вопрос, связанный ниже, используется метод расширения. Экшн-изображение MVC3 Razor

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Я не совсем уверен, почему метод расширения не подходит, но что-то вроде этого должно сработать:

@helper ActionImage(string action, object routeValues, string imagePath, string alt) {
    <a href="@Url.Action(action, routeValues)">
        <img src="@Url.Content(imagePath)" alt="@alt">
    </a>
}

Это только у меня в голове, поэтому ваш пробег может варьироваться.Вы также должны иметь возможность использовать реализацию, представленную в вопросе, как блок @functions { }, а не как метод расширения.

0 голосов
/ 10 февраля 2012

Вот простой пример моего изображения html helper

небольшая статья о Html-помощниках и как ее интегрировать

http://www.sexyselect.net/blog/post/2011/08/16/Writing-a-Razor-MVC3-HTML-Helpers

пример другого в помощниках html http://www.aspnetwiki.com/page:creating-custom-html-helpers

Пример кода

  /// <summary>
        /// Insights the traffic light image.
        /// </summary>
        /// <param name="html">The HTML.</param>
        /// <param name="trafficLight">The traffic light.</param>
        /// <returns>Image for the current traffic light. If not recognised writes name ot he light.</returns>
        public static MvcHtmlString InsightTrafficLightImage(this HtmlHelper html, TrafficLight trafficLight)
        {
            StringBuilder result = new StringBuilder();
            string color = string.Empty;
            string hoverText = string.Empty;
            switch (trafficLight)
            {
                case TrafficLight.Amber:
                    {
                        color = "Yellow";
                        hoverText = "Work in progress";
                        break;
                    }
                case TrafficLight.Green:
                    {
                        color = "green";
                        hoverText = "Complete";
                        break;
                    }

                case TrafficLight.Red:
                    {
                        color = "red";
                        hoverText = "Not yet started";
                        break;
                    }
                case TrafficLight.Black:
                case TrafficLight.Unknown:
                default:
                    {
                        break;
                    }
            }

            if (!string.IsNullOrEmpty(color))
            {
                TagBuilder img = new TagBuilder("img");
                img.MergeAttribute("src", string.Format("/Content/images/traffic_light_{0}.gif", color));
                img.MergeAttribute("alt", hoverText);
                img.MergeAttribute("title", hoverText);
                result.Append(img.ToString());
            }
            else
            {
                result.Append(Enum.GetName(typeof(TrafficLight), trafficLight));
            }
            return MvcHtmlString.Create(result.ToString());
        }

Надеюсь, вы найдете это полезным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...