2011-12-20 88 views
0

在我看來,我用下面的代碼從我的數據庫中獲取的圖像(通過一個操作方法),並在HTML標籤創建一個輔助方法來代替錨HTML標籤

<img src="@Url.Action("DownloadBackground", new { projectID = 31 })" /> 

行動顯示它名爲DownloadBackground的方法將返回一個FileContentResult,並將圖像存儲在我的數據庫中。它的工作原理,但我想創建一個輔助方法來取代它。

我想是這樣的:

@Html.BackgroundFor(31) 

其中31是項目,我需要的ID。我希望這個輔助方法能夠生成相同的html代碼。

所以我嘗試創建我的幫助是這樣的:

public static MvcHtmlString BackgroundFor(this HtmlHelper helper, int id) 
{ 
    // What code here ?? 

    var builder = new TagBuilder("a"); 
    builder.MergeAttribute("src", ???); 
    return new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing)); 
} 

回答

1

試試這個:

builder.MergeAttribute("src", new UrlHelper(helper.ViewContext.RequestContext) 
            .Action("DownloadBackground", 
              new { projectID = id })); 

,或者您可以使用

new UrlHelper(((MvcHandler)HttpContext.Current.Handler).RequestContext) 

這將做太多

+0

我嘗試這個,但我沒有'上下文'屬性在我的幫手上如此helper.Context不起作用。我的幫助變量是HtmlHelper類型。任何想法? – Bronzato 2011-12-20 12:58:46

+0

對不起,我的壞。請嘗試更新的代碼。 – 2011-12-20 13:02:42

+0

它的工作原理。非常感謝你。 – Bronzato 2011-12-20 13:28:10