在MVC Razor视图页面中使用string.Format

时间:2013-03-15 20:32:13

标签: asp.net-mvc razor

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

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

这里有些东西显然是错误的,因为在渲染这个页面时,我在这一部分内部没有任何内容。

4 个答案:

答案 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行将显示&#34; Hello &#34; 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);
    }