Nul*_*ter 10 asp.net-mvc grid webgrid razor asp.net-mvc-3
在我的webgrid中,我需要根据值显示图像.代码如下
@model TraktorumMVC.Models.ManagePhotos
@{
ViewBag.Title = "ManagePhotos";
Layout = "~/Views/Shared/_Layout.cshtml";
var grid = new WebGrid(Model.AdPhotos);
}
@grid.GetHtml(
displayHeader: false,
columns: grid.Columns(
grid.Column(format: (item) =>
{
if (item.IsMainPreview == true)
{
return @<text><img src="@Url.Content("~/Content/images/preview-photo.gif")" alt="Image "/></text>;
}
else
{
return @<text><img src="@Url.Content("~/Content/images/non-preview-photo.gif")" alt="Image "/></text>;
}
}
),
grid.Column(format: (item) => Html.ActionLink("Remove Photo", "RemovePhoto", "Images", new { photoID = @item.Id }, new { @class = "RemovePhoto" }))
));
Run Code Online (Sandbox Code Playgroud)
我不确定如何if在webgrid中使用.我只是尝试过.它不工作.忘记跟随错误
The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)' has some invalid arguments
Run Code Online (Sandbox Code Playgroud)
nem*_*esv 24
在grid.Column方法的format参数中,您将一个lambda表达式组合在一起,以便您可以使用它if.但问题是@当您在Razor中的"代码模式"输出HTML时,您无法使用.因此,您需要将图像标记创建包装到HtmlHelper中(如内置Html.ActionLink有大量示例)或使用HTML.Raw方法返回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" }))
));
Run Code Online (Sandbox Code Playgroud)
也是在最后一行,而不是new { photoID = @item.Id }你应该写.new { photoID = item.Id }
要了解更多关于剃刀这里是一个详细的教程.
| 归档时间: |
|
| 查看次数: |
20451 次 |
| 最近记录: |