Каков правильный синтаксис для отображения HTML-тега img в ASP.NET MVC 2? - PullRequest
1 голос
/ 12 марта 2011
<img alt="Upload Profile Pic" src="<%= ViewData["PicSource"].ToString() %>" />

UPDATE: Кроме того, когда мы пишем этот синтаксис, Visual Studio подчеркивает несколько элементов нашего HTML-кода фигурными красными линиями, как если бы у нас были некоторые синтаксические ошибки, и похоже, что написанный нами синтаксис не будет работать и неправильно, но на самом деле, когда я его построил, это сработало.

Он также запрещает автоматическое форматирование HTML-кода. Для меня это было достаточно веской причиной для того, чтобы задать этот вопрос, потому что хотя я знал, что этот синтаксис будет работать, даже тогда, когда каждый раз, когда я пишу так, я чувствую, что сделал что-то не так.

1 Ответ

3 голосов
/ 12 марта 2011

Да, вы можете написать так.

Тем не менее, его часто называют «спагетти-кодом», и лучше всего использовать вспомогательный метод.

public static class ImageHelper
{
    public static MvcHtmlString Image(this HtmlHelper html, string sourcePath, object htmlAttributes)
    {
        return html.Image(sourcePath, new RouteValueDictionary(htmlAttributes));
    }
    public static MvcHtmlString Image(this HtmlHelper html, string sourcePath, IDictionary<string,object> htnlAttributes)
    {
        if(string.IsNullOrEmpty(sourcePath))
        {
            throw new ArgumentException("Image source path cannot be null or empty.", "sourcePath");
        }
        TagBuilder tagBuilder = new TagBuilder("img");
        tagBuilder.MergeAttributes<string,object>(htnlAttributes);
        tagBuilder.MergeAttribute("src", sourcePath, true);
        return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
    }
}

тогда вы используете, похоже,

        Html.Image(ViewData["PicSource"] as string, new {alt = "Upload Profile Pic"});
...