Asp.net-Mvc-3
如何使用 Razor 顯示動態圖像名稱
我對 MVC 很陌生,最近使用 Razor 視圖引擎啟動了一個 Asp.Net MVC3 項目。
目前,我無法使用 Razor 將圖像名稱輸出到 html img 標籤中。
假設我的模型中有一個 Car 類,帶有一個名為 ModelName 的字元串屬性。我還有一個包含汽車模型圖像的文件夾,它們以汽車模型命名,這樣我就可以按照慣例顯示特定模型的圖像,只需使用名稱即可。
從我的控制器中,我將一組 Cars 傳遞給我的視圖,並執行以下操作以顯示汽車模型圖像列表:
@foreach (var item in Model) { <img src='@item.ModelName.png' /> }但是,如果我嘗試執行它,我會收到錯誤消息:
編譯器錯誤消息:CS1061:“string”不包含“png”的定義,並且找不到接受“string”類型的第一個參數的擴展方法“png”(您是否缺少 using 指令或程序集引用?)
我也試過
@foreach (var item in Model) { <img src='@{item.ModelName}.png' /> }但這會導致:
編譯器錯誤消息:CS1528:預期;或 =(不能在 >declaration 中指定建構子參數)源錯誤:
第 84 行:#line default 第 85 行:#line hidden 第 86 行:WriteLiteral(".png' “>\r\n”); 第 88 行:
我可以通過以下方式解決它:
@foreach (var item in Model) { string imageName = string.Format("{0}.png", item.ModelName); <img src='@imageName' /> }但這感覺很笨拙,肯定有更好的方法嗎?
你也可以這樣做:
@foreach (var item in Model) { <img src="@(item.ModelName).png" /> }或者做一個助手:
public static MVCHtmlString Image<T>(this HtmlHelper helper, string name) { TagBuilder img=new TagBuilder("img"); img.Attributes.Add("src", name+".png"); return new MvcHtmlString(img.ToString()); }並像這樣使用它:
@foreach (var item in Model) { @Html.Image(item.ModelName) }
@foreach (var item in Model._imageList) { <tr> <td> @Html.DisplayFor(modelItem => item.FriendlyName) </td> <td> @Html.DisplayFor(modelItem => item.CreateDate) </td> <td> <img src="@Url.Content(item.ImagePath)" alt="Image" /> </td> <td> @Html.ActionLink("Edit", "UploadImageEdit", new { id = item.ImageID }) | @Html.ActionLink("Details", "UploadImageDetails", new { id = item.ImageID }) | @Html.ActionLink("Delete", "UploadImageDelete", new { id = item.ImageID }) </td> </tr> }這將顯示保存在文件系統上的圖像,但文件路徑在使用 foreach 循環時保存在數據庫中。