Использование 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 отобразится " Hello " Melman
Строка 2 отобразит "Hello Melman"
Просто некоторые вещи, которые я обнаружил при игре с выходом на страницу. Основная идея заключается в том, что вы создаете страницу html вверх, а затем показываете ее. Поэтому, когда вы закончите манипулировать выходом html, вы можете отобразить его с помощью @
outsite из любого {}
Ответ 4
У меня была та же проблема, и я сделал это так, используя Url.Content и string.Format:
<img src="@Url.Content(string.Format("~/Content/img/{0}", Resources.MyImage))" />