Подтвердить что ты не робот

Где находится Html.Image в ASP.NET MVC RC?

Я не могу найти метод Html.Image в новой версии MVC RC. Пожалуйста, дайте мне пример, как сделать простой образ в ASP.NET MVC RC-сайтах.

4b9b3361

Ответ 1

Вам нужно написать свой собственный или использовать метод Url.Content() для установки атрибута source. Или вы можете использовать мое.: -)

public static class HtmlHelperExtensions
{

    public static string Image( this HtmlHelper helper, 
                                string url,
                                string altText,
                                object htmlAttributes )
    {
        TagBuilder builder = new TagBuilder( "img" );
        builder.Attributes.Add( "src", url );
        builder.Attributes.Add( "alt", altText );
        builder.MergeAttributes( new RouteValueDictionary( htmlAttributes ) );
        return builder.ToString( TagRenderMode.SelfClosing );
    }
}

Использование:

<%= Html.Image( Url.Content( "~/Content/images/img.png" ),
               "alt text",
               new { id = "myImage", border = "0" } )
 %>

EDIT: поскольку я написал это, я ушел от его использования. Я оставлю здесь ответ, хотя для потомков. Хотя я думаю, что это или метод из сборника Future, является разумным выбором, я просто использую тег изображения с URL-адресом, предоставленным UrlHelper. Когда я реорганизовал своих помощников в автономную библиотеку, этот не делал разреза. Я буду переоценивать, если он внесет его в (не-фьючерсную) библиотеку MVC.

<img src="<%= Url.Content( "~/content/..." ) %>"
     alt="alt text"
     class="has-border" />

Ответ 2

Что не так с чистым HTML?

<img src="" alt="" />

Вы можете использовать коллекцию или модель ViewData для заполнения атрибута src:

<img src="<%= ViewData["ImageSource"] %>" alt="" />

<img src="<%= ViewData.Model.ImageSource %>" alt="" />

Edit:

Относительно использования относительных URL-адресов (то есть с использованием символа "~" ) в пути измените приведенный выше код на использование ResolveUrl. Например:

<img src="<%= ResolveUrl(ViewData.Model.ImageSource) %>" alt="" />

Ответ 3

Теперь мы можем вернуть MvcHtmlString.

public static MvcHtmlString Image(this HtmlHelper helper, string url, string altText, object htmlAttributes)
        {
            TagBuilder builder = new TagBuilder("img");
            builder.Attributes.Add("src", url);
            builder.Attributes.Add("alt", altText);
            builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
        }

использование в бритве:

@Html.Image( Url.Content( "~/Content/images/img.png" ),
               "alt text",
               new { id = "myImage", border = "0" } )

Ответ 4

Его в фьючерсах MVC - которые они обновляют с каждой версией.

Фьючерсы RC2 находятся здесь: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142

Не чувствуйте себя виноватым в использовании чего-то в "фьючерсах". Его никуда не денется - и даже если у вас когда-либо был доступ к источнику.

Вам нужно быть немного осторожным в отношении некоторых вещей в фьючерсах (в случае их исчезновения), но вы можете быть уверены, что помощник изображения не будет никуда.

Ответ 5

public static class HtmlImageHelper
{
    public static IHtmlString Image(this HtmlHelper helper,
                            string src,
                            string alt)
    {
        TagBuilder builder = new TagBuilder("img");
        builder.Attributes.Add("src", VirtualPathUtility.ToAbsolute(src));
        builder.Attributes.Add("alt", alt);
        return new HtmlString(builder.ToString(TagRenderMode.SelfClosing));
    }
}

@Html.Image(@Model.Image, @Model.alt)

Ответ 6

Если вам нужно ссылаться на изображение в, скажем, в папке ~/Content/images/, это можно легко сделать с помощью простого HTML:

<img src="/Content/image/mypic.png" alt="a picture available anywhere" />

Трюк - это "/" в начале атрибута src, который заставит браузер начать просмотр папок в корне сайта. Поскольку ASP.NET MVC по умолчанию не анализирует маршруты URL-адресов на файлах, которые существуют на сервере, файл будет извлечен, как обычно. Это также будет работать на представлении Index контроллера Home, независимо от того, имеете ли вы URL http://www.example.com/, http://www.example.com/Home или http://www.example.com/Home/Index