Как лучше всего заменить ссылки изображениями с помощью Razor в MVC3. Я просто делаю это сейчас:
<a href="@Url.Action("Edit", new { id=MyId })"><img src="../../Content/Images/Image.bmp", alt="Edit" /></a>
Есть ли способ лучше?
Как лучше всего заменить ссылки изображениями с помощью Razor в MVC3. Я просто делаю это сейчас:
<a href="@Url.Action("Edit", new { id=MyId })"><img src="../../Content/Images/Image.bmp", alt="Edit" /></a>
Есть ли способ лучше?
~/Content
). Путь../../Content
не может быть действительным из разных маршрутов (например/
,/Home
,/Home/Index
).Ответы:
Вы можете создать метод расширения для HtmlHelper, чтобы упростить код в вашем файле CSHTML. Вы можете заменить свои теги таким методом:
Вот пример метода расширения для приведенного выше кода:
источник
routeValues
на,ActionResult
а затем вurl.Action
функции изменитьrouteValues
наrouteValues.GetRouteValueDictionary()
/configuration/system.web/pages/namespaces
элементе.alt
я принимаю объект для получения свойств html с использованием анонимного объектаvar attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
и, наконец,foreach (var attr in attributes){ imgBuilder.MergeAttribute(attr.Key, attr.Value.ToString());}
/Views
папка верхнего уровняВы можете использовать
Url.Content
этот параметр для всех ссылок, поскольку он переводит тильду~
в корневой uri.источник
<a href="@Url.Action("Index","Home")"><img src="@Url.Content("~/Content/images/myimage.gif")" alt="Home" /></a>
Основываясь на приведенном выше ответе Лукаса, это перегрузка, которая принимает имя контроллера в качестве параметра, аналогично ActionLink. Используйте эту перегрузку, когда ваше изображение ссылается на действие в другом контроллере.
источник
Что ж, вы можете использовать решение @Lucas, но есть и другой способ.
Теперь добавьте этот класс в файл CSS или на свою страницу:
С этим классом любая ссылка будет иметь желаемое изображение.
источник
ControllerName
действовать. Как это:@Html.ActionLink("Update", "Update", "*Your Controller*",*object values*, new {@class = "imgLink"})
Это оказалось очень полезной веткой.
Для тех, кто страдает аллергией на фигурные скобки, вот ответы Лукаса и Крейка на VB.NET:
источник
Этот метод расширения также работает (для размещения в общедоступном статическом классе):
источник
Чтобы добавить ко всей работе Awesome, начатой Люком, я публикую еще одну, которая принимает значение класса css и рассматривает class и alt как необязательные параметры (действительные в ASP.NET 3.5+). Это расширит функциональность, но сократит количество необходимых перегруженных методов.
источник
модификация слайда изменена Helper
CSS-класс
Создайте ссылку, просто передайте имя класса
источник
Я присоединился к ответу Лукаса и « Помощники ASP.NET MVC, объединение двух объектов htmlAttributes вместе » и плюс имя_контроллера к следующему коду:
// Пример использования в CSHTML
И класс расширения для кода выше:
источник
Это было бы очень хорошо
источник