我在新的MVC RC版本中找不到Html.Image方法。请有人举例说明如何在ASP .NET MVC RC站点中呈现简单的图像。
答案 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,因此将像往常一样检索该文件。无论您是否拥有网址Index
,Home
或http://www.example.com/
http://www.example.com/Home
控制器的http://www.example.com/Home/Index
视图