使用MVC.net显示或不显示图像的好方法

时间:2009-12-18 15:44:49

标签: asp.net-mvc

我是ASp.net MVC的新手,所以对你来说这可能是微不足道的。不过,我还有一个问题要问:我想根据booleean显示或不显示图像。

使用classis asp.net,我将可见属性与我的布尔值进行数据绑定,然后跳转,诀窍就完成了。但是这里它不起作用。我浏览了网页并找到了处理它的方法:

<%= Html.Image(this.ResolveUrl("~/attention.gif"),"dates invalid",myboolean) %>

使用此类Html hepler:

public static string Image(this HtmlHelper helper,
                                    string url,
                                    string altText,
                                    bool IsVisible)
        {
            string returnvalue = string.Empty;
            if (IsVisible)
            {
                 TagBuilder builder = new TagBuilder("image");
                 builder.Attributes.Add("src", url);
                 builder.Attributes.Add("alt", altText);
                 builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
                 returnvalue = builder.ToString(TagRenderMode.SelfClosing);
            }
            return returnvalue;
        }

我做对了还是有些事我没有得到?

4 个答案:

答案 0 :(得分:2)

怎么样:

<% if (myboolean) { %>
  <img src="<%= Url.Content( "~/attention.gif" ) %>" alt="dates invalid" />
<% } %>

这对于一次性非常有效。如果你需要经常这样做,那么投资一个HtmlHelper扩展似乎是合理的,虽然你可以使用MVC Futures中的一个,只需使用style="display: none;"的Html属性,并在不编写自己的情况下获得相同的效果。

答案 1 :(得分:2)

这个怎么样?

<% if (myBoolean) { %>
    <%= Html.Image("myUrl", "altText") %>
<% } %>

答案 2 :(得分:1)

此代码不会创建隐藏元素。虽然这可能是你所需要的,但你应该意识到,如果你的应用程序逻辑决定你不能在客户端使用JS将其翻转为可见的暗示。

使用特殊的HtmlHelper来输出基于boolen的图像似乎有点矫枉过正。你需要以这种方式显示/隐藏多少张图像?如果它只是一个,请在您的视图中考虑这样的事情:

<% if (myboolean) { %>
    <img src="<%= this.ResolveUrl("~/attention.gif") %> alt="dates invalid" />
<% } %>

答案 3 :(得分:1)

看起来不错,但我会改变

this.ResolveUrl("~/attention.gif")

HttpContext.Current.Server.MapPath(url)
辅助方法中的

。这样你就可以打电话了

<%= Html.Image("~/attention.gif","dates invalid",myboolean) %>

看起来更好,你不必重复ResolveUrl。