Asp.net

如何在 ASP.Net MVC 剃須刀助手中指定圖像的虛擬路徑

  • June 18, 2020

在我的 razor style helper 類(位於 App_Code 文件夾中,我有這行程式碼:

<img src="../../Content/images/ajax_activity.gif" alt="loading"/>

這在 Cassini 中執行良好,但是當我將應用程序部署到 IIS(虛擬目錄)時,IIS 找不到路徑。虛擬路徑被忽略。這也不起作用:

<img src="@Href("~/Content/images/ajax_activity.gif")" alt="loading" />

好的,解決了它,雖然我不確定它為什麼會起作用。在嘗試了以下所有組合但均未成功後:

<img src="../Content/images/ajax_activity.gif" alt="loading"/>
<img src="/Content/images/ajax_activity.gif" alt="loading"/>
<img src="~/Content/images/ajax_activity.gif" alt="loading"/>
<img src="Content/images/ajax_activity.gif" alt="loading"/>

以下終於按預期工作

<img src="./Content/images/ajax_activity.gif" alt="loading"/>

它使用虛擬目錄集正確返回了圖像路徑。有人能解釋一下嗎?

您可以使用@Url.Content方法將虛擬相對路徑轉換為絕對應用程序路徑,如下所示:

<img src=@Url.Content("~/images/picture.png") alt="picture description">

它將在此 HTML 程式碼中轉換並轉發給客戶端:

<img src="/appname/images/picture.png" alt="picture description">

更新:另一方面,您可以將圖像轉換為 base64,它也會正確顯示:

<img src="data:image/png;base64,iVBORw0KG...SuQmCC" alt="picture description">

引用自:https://stackoverflow.com/questions/9864881