2013-03-15 73 views
15

我要呈現的圖像使用string.Format這樣的Razor視圖...在MVC剃刀使用的String.format查看

foreach (var p in @Model.Photos) 
{       
    string.Format("<img src='{0}' width='100' alt='{1}' />", p.Path, 
           p.AlternateText);      
} 

東西顯然是錯誤的在這裏,因爲在渲染這個頁面,我已經本節內容沒有任何內容。

回答

25

string.Format()返回一個字符串,您將放棄。

您需要在字符串打印到頁面:

@string.Format(...) 

注意,因爲這不是一個聲明,不應該有一個;

另外請注意,這將是更好地使用刀片本身:

<img src="@p.Path" width="100" alt="@p.AlternateText" /> 
10

我只是單純地這樣做是爲了繞過這個問題:

@model UXLab.Areas.SectionArea.ViewModels.SectionViewModel 
<section> 
    <header>@Model.Title</header> 
    <p> 
     @{var contentBuilder = new System.Text.StringBuilder(); } 
     @foreach (var link in Model.Links) 
     { 
      contentBuilder.append(Html.ActionLink(link.LinkText, link.Action, 
                link.Controller)); 
     } 
     @Html.Raw(contentBuilder.ToString()) 
    </p> 
</section> 

在這個例子中,我遍歷一些鏈接我想顯示到存儲在ViewModel中的頁面。

爲了顯示在頁面上的鏈接,我遍歷所有這些附加他們到StringBuilder,然後用Html.Raw顯示原始的HTML,如果你不使用Raw,那麼你就無法獲得報價和東西通過對頁面例如:

1: @String.Format("\"Hello {0}\"", Model.Name) 

2: @Html.Raw(String.Format("\"Hello {0}\"", Model.Name)) 

1號線將顯示&#34; Hello &#34; Melman
2號線將顯示"Hello Melman"

只是一些東西,我已經發現了與打出來的時候放到頁面上。基本的想法是,你建立頁面的HTML,然後顯示它。因此,一個商店,你去的方法,一旦你完操縱HTML輸出,然後顯示它使用@ outsite的任何{}

+0

「@ Html.Raw」的+1。 – 2013-10-03 09:37:37

12

它使用string.Format在剃刀痛苦是真實的,但你Html.FormatValue,這裏是如何使用它:

@Html.FormatValue("value", "format") 

的方法簽名是:

FormatValue(object value, string format) 
1

我有同樣的問題,我已經做到了這樣的使用Url.C內容和字符串。格式:

<img src="@Url.Content(string.Format("~/Content/img/{0}", Resources.MyImage))" />