Ответ 1
В параметре grid.Column
format
параметра вы объединяете выражение лямбда, чтобы вы могли, конечно, использовать if
. Но проблема в том, что вы не можете использовать @
, когда находитесь в режиме кода в Razor для вывода HTML. Поэтому вам нужно обернуть создание тега изображения в HtmlHelper (например, встроенный Html.ActionLink
есть много примеры) или использовать HTML. Исходный метод для возврата HTML:
@grid.GetHtml(
displayHeader: false,
columns: grid.Columns(
grid.Column(format: (item) =>
{
if (item.IsMainPreview == true)
{
return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/preview-photo.gif")));
}
else
{
return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/non-preview-photo.gif")));
}
}
),
grid.Column(format: (item) => Html.ActionLink("Remove Photo", "RemovePhoto", "Images", new { photoID = item.Id }, new { @class = "RemovePhoto" }))
));
Также в последней строке вместо new { photoID = @item.Id }
вы должны написать new { photoID = item.Id }
Чтобы узнать больше о бритве, здесь приведен подробный tutorial.