2009-12-18 21 views
0

對於ASp.net MVC,我很新,所以對你來說可能是很微不足道的。儘管如此,我還是有這個問題要問:我想根據booleean來顯示圖像。使用MVC.net顯示或不使用圖像的好方法

隨着classis asp.net,我用我的布爾值數據綁定可見的屬性,然後跳,訣竅完成。但是在這裏它不會以這種方式工作。我曾經瀏覽網頁,發現處理它的這種方式:

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

與這種一個html赫普勒:

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; 
     } 

我做正確的或者是有一些輕鬆,我沒有得到?

回答

2

如何:

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

這工作得很好了一次性的。如果你需要經常這樣做,那麼投資HtmlHelper擴展似乎是合理的,儘管你可以使用MVC Futures的那個,並簡單地使用style="display: none;"的Html屬性,並獲得相同的效果,而無需編寫自己的。

2

這個怎麼樣?

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

此代碼不會創建隱藏元素。雖然這可能是你需要的,但你應該意識到,如果你的應用程序邏輯規定如此,你不能在客戶端使用JS將其翻轉回可見狀態。

有特殊的HtmlHelper只是輸出一個基於boolen的圖像似乎有點矯枉過正。您需要以這種方式顯示/隱藏多少圖片?如果只有一個,只考慮這樣的事情在你看來:

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

似乎不錯,但我會在helper方法改變

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

HttpContext.Current.Server.MapPath(url) 

。這樣你可以撥打

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

看起來更好,你不必重複ResolveUrl。