Использование string.Format на странице просмотра MVC Razor

Я хочу сделать изображения в режиме Razor с помощью string.Format, как это...

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

Что-то здесь явно не так, потому что при рендеринге этой страницы у меня ничего нет в этом разделе.

Ответы

Ответ 1

string.Format() возвращает строку, которую вы отбрасываете.

Вам нужно напечатать эту строку на странице:

@string.Format(...)

Обратите внимание, что поскольку это не утверждение, не должно быть ;.

Также обратите внимание, что было бы лучше использовать Razor:

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

Ответ 2

Это правда, используя string.Format, больно в Razor, но у вас есть Html.FormatValue, вот как его использовать:

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

Подпись метода:

FormatValue(object value, string format)

Ответ 3

Я просто делаю это, чтобы обойти эту проблему:

@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 из любого {}

Ответ 4

У меня была та же проблема, и я сделал это так, используя Url.Content и string.Format:

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