我想使用像这样的string.Format
在Razor视图中渲染图像...
foreach (var p in @Model.Photos)
{
string.Format("<img src='{0}' width='100' alt='{1}' />", p.Path,
p.AlternateText);
}
这里有些东西显然是错误的,因为在渲染这个页面时,我在这一部分内部没有任何内容。
答案 0 :(得分:27)
string.Format()
会返回一个您要丢弃的字符串。
您需要将该字符串打印到页面:
@string.Format(...)
请注意,由于这不是声明,因此不应该有;
。
另请注意,使用Razor本身会更好:
<img src="@p.Path" width="100" alt="@p.AlternateText" />
答案 1 :(得分:15)
我只是这样做来解决这个问题:
@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,如果你不使用{{1然后你不会得到引用和事情到页面示例:
Raw
第1行将显示1: @String.Format("\"Hello {0}\"", Model.Name)
2: @Html.Raw(String.Format("\"Hello {0}\"", Model.Name))
第2行将显示" Hello " Melman
我在输出到页面时发现了一些我发现的东西。基本的想法是,你构建页面html,然后显示它。因此,当你完成对html输出的操作时,你可以使用任何"Hello Melman"
@
外部显示方法。
答案 2 :(得分:13)
在Razor中使用string.Format
是真的很痛苦,但你做有一个Html.FormatValue
,以下是如何使用它:
@Html.FormatValue("value", "format")
方法签名是:
FormatValue(object value, string format)
答案 3 :(得分:2)
我有同样的问题,我使用Url.Content和string.Format:
这样做了 .product
{
width:300px;
height:auto;
float:left;
}
.p1
{
width:300px;
height:100px;
float:left;
background-color:#333333;
}
.p1 a
{
width:300px;
height:100px;
display:block;
}
.p1 a:hover
{
width:300px;
height:100px;
background-image:url(../img/dynamic/girlsproduct-01.png);
}