Сбой <img>в приложении MVC2 - PullRequest
1 голос
/ 19 августа 2010

В представлении MVC2 я не могу заставить работать теги вообще.Они появляются как разбитые картинки.Тег (созданный методом расширения Html.ImageFor (), который я написал), является вполне допустимым тегом, таким как этот, который я скопировал из источника страницы в IE:

<img alt="Picture Display" src="~/Content/Pictures/IMGP0164 (resized).JPG" />

Обратите внимание, что если яне используйте вспомогательный метод, а просто введите тег с правильным URL-адресом src, который также будет поврежден.Если я вместо этого использую тег с тем же URL-адресом src, который работает нормально, и картинка отображается, как и ожидалось.

Так что по какой-то причине праведные теги просто не работают для меня из представления MVC2.Я очень новичок в MVC2, но не новичок в ASP.NET или HTML.Есть ли что-то в тегах при использовании в представлении MVC2, о которых я просто еще не узнал?

Заранее спасибо за подсказку!

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Ваш Html.ImageFor() поврежден, поскольку src="~/Content/Pictures/IMGP0164 (resized).JPG" не является допустимым URI.

Тильда должна быть заменена виртуальным путем сайта.Для этого вы используете Url.Content.Так как вы не указали источник для вашего сломанного метода, я не могу это исправить, но в простой разметке вы бы написали:

<img alt="Picture Display" src="<%= Url.Content("~/Content/Pictures/IMGP0164 (resized).JPG")" />

Вы можете использовать ту же идею внутри вашего помощника.

0 голосов
/ 19 августа 2010

Вот запрашиваемый вспомогательный метод:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using PictureThis.Models;


namespace System.Web.Mvc.Html
{
    public static class ExtensionMethods
    {
        //  HtmlHelper Extensions

        /// <summary>
        /// Builds an Html image element.
        /// </summary>
        /// <param name="helper">Required target param</param>
        /// <param name="src">Source URL attribute</param>
        /// <param name="alt">Alt text attribute</param>
        /// <returns></returns>
        public static MvcHtmlString ImageFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string alt)  
        {  
            TagBuilder tb = new TagBuilder("img");
            Delegate GetSource = expression.Compile();
            string source = GetSource.DynamicInvoke(html.ViewData.Model).ToString();
            tb.Attributes.Add("src", source);  
            tb.Attributes.Add("alt", alt);  
            return MvcHtmlString.Create(tb.ToString(TagRenderMode.SelfClosing));  
        }      
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...