Где находится Html.Image в ASP .NET MVC RC? - PullRequest
18 голосов
/ 04 февраля 2009

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

Ответы [ 5 ]

45 голосов
/ 04 февраля 2009

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

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" } )
 %>

РЕДАКТИРОВАТЬ : С тех пор как я написал это, я ушел от его использования. Я оставлю ответ здесь, хотя для потомков. Хотя я думаю, что этот метод или метод из сборки Future является разумным выбором, я просто использую тег image с URL-адресом, предоставленным UrlHelper. Когда я реорганизовал моих помощников в отдельную библиотеку, эта не сделала разрез. Я пересмотрю, если он попадет в (не фьючерсную) библиотеку MVC.

<img src="<%= Url.Content( "~/content/..." ) %>"
     alt="alt text"
     class="has-border" />
4 голосов
/ 11 июля 2011

Теперь мы можем вернуть 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 голосов
/ 04 февраля 2009

Что не так с чистым 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="" />
2 голосов
/ 10 марта 2009

Это в фьючерсах MVC - которые они обновляют с каждым выпуском.

RC2 фьючерсы здесь: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142

Не чувствую вины за то, что использовал что-то в «фьючерсах». Он никуда не денется - и даже если у вас когда-нибудь будет доступ к источнику.

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

0 голосов
/ 04 февраля 2009

Если вам нужно сослаться на изображение, скажем, в папке ~/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

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