20

我想使用string.Format这样的方式在 Razor 视图中渲染图像......

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

这里显然有问题,因为在渲染此页面时,此部分中没有任何内容。

4

4 回答 4

30

string.Format()返回一个字符串,您将丢弃该字符串。

您需要将该字符串打印到页面:

@string.Format(...)

请注意,由于这不是一个声明,所以不应该有;.

另请注意,最好使用 Razor 本身:

<img src="@p.Path" width="100" alt="@p.AlternateText" />  
于 2013-03-15T20:34:48.463 回答
18

我只是这样做来解决这个问题:

@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.

为了在页面上显示链接,我循环遍历它们,将它们附加到 a 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 输出的操作,你就可以使用@任何的外部站点来显示它{}

于 2013-06-04T10:51:39.827 回答
15

在 Razor 中使用确实string.Format很痛苦,但你确实有一个Html.FormatValue,这里是如何使用它:

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

方法签名是:

FormatValue(object value, string format)
于 2013-10-05T18:30:09.880 回答
2

我遇到了同样的问题,我已经使用 Url.Content 和 string.Format 完成了这样的操作:

<img src="@Url.Content(string.Format("~/Content/img/{0}", Resources.MyImage))" />
于 2015-10-30T15:26:27.517 回答