代码之家  ›  专栏  ›  技术社区  ›  Velocoder

ASP.NET MVC RC中的html.image在哪里?

  •  18
  • Velocoder  · 技术社区  · 15 年前

    在新的MVC RC版本中找不到html.image方法。请有人给我一个如何在ASP.NET MVC RC站点中呈现简单图像的例子。

    5 回复  |  直到 15 年前
        1
  •  45
  •   tvanfosson    14 年前

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

    编辑 自从我写了这个,我就不再使用它了。不过,我会把答案留给子孙后代。虽然我认为它或者来自未来程序集的方法是一个合理的选择,但我发现自己只是使用带有urlhelper提供的url的image标记。当我把我的助手重构成一个独立的库时,这个库并没有成功。我将重新评估它是否进入(非期货)MVC库。

    <img src="<%= Url.Content( "~/content/..." ) %>"
         alt="alt text"
         class="has-border" />
    
        2
  •  4
  •   Kevin Pang    15 年前

    纯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="" />
    
        3
  •  4
  •   Mangesh    13 年前

    现在我们可以返回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
  •  2
  •   Simon_Weaver    15 年前

    它在MVC期货中——它们在每次发布时都会更新。

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

    不要为在“未来”中使用某些东西感到内疚。它不会去任何地方——即使它曾经让你访问过这个来源。

    你需要对未来的一些事情稍微谨慎一点(以防它们消失),但是你可以很确定图像助手不会去任何地方。

        5
  •  -1
  •   Tomas Aschan    15 年前

    如果您需要引用图像,例如 ~/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