ASP .NET MVC RC中的Html.Image在哪里?

时间:2009-02-03 23:02:40

标签: asp.net-mvc

我在新的MVC RC版本中找不到Html.Image方法。请有人举例说明如何在ASP .NET MVC RC站点中呈现简单的图像。

6 个答案:

答案 0 :(得分:45)

需要自己编写或使用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" } )
 %>

编辑:自从我写这篇文章以来,我已经不再使用它了。对于子孙后代,我会留下答案。虽然我认为它或者来自Future程序集的方法是一个合理的选择,但我发现自己只是将图像标记与UrlHelper提供的url一起使用。当我将我的助手重构为一个独立的库时,这个没有成功。我将重新评估它是否进入(非期货)MVC库。

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

答案 1 :(得分:4)

纯HTML有什么问题?

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

您可以使用ViewData集合或模型来填充src属性:

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

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

编辑:

关于在路径中使用相对URL(即使用“〜”字符),请更改上面的代码以使用ResolveUrl。例如:

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

答案 2 :(得分:4)

现在我们可以返回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" } )

答案 3 :(得分:2)

它在MVC期货中 - 每次发布都会更新。

RC2期货在这里:http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142

不要为'期货'中的某些东西感到内疚。它不会去任何地方 - 即使它曾经有过访问源。

你需要对期货中的某些东西保持谨慎(如果它们消失了),但你可以非常肯定图像助手不会去任何地方。

答案 4 :(得分:2)

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)

答案 5 :(得分:-1)

如果您需要在~/Content/images/文件夹中引用图像,只需使用纯HTML即可轻松完成:

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

诀窍是/属性开头的“src”,它会告诉浏览器开始浏览网站根目录下的文件夹。由于ASP.NET MVC默认情况下不解析服务器上存在的文件的路由URL,因此将像往常一样检索该文件。无论您是否拥有网址IndexHomehttp://www.example.com/

,这也适用于http://www.example.com/Home控制器的http://www.example.com/Home/Index视图