试图在MVC中创建一个动态链接3
我正在我公司的Intranet站点上工作,在其中一个页面上需要包含.PDF文件链接(如果存在)。没问题,我得到了足够好的工作。我遇到的问题是如果.PDF不存在,则更改链接。这是我目前有:试图在MVC中创建一个动态链接3
, grid.Column(format: (item) => (File.Exists(item.FileName)==true ? @<a href="@Url.Content(item.FileName)">Art Work</a> : Html.Raw("")))
我收到的错误: 参数3:无法从“lambda表达式”到“System.Func”
和 的“最佳重载方法匹配转换System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)'有一些无效参数
我已经对Google做了一些尽职调查并找不到任何东西。有人能告诉我我要去哪里吗?
我肯定会写一个自定义助手将负责生成正确的链接:
public static class HtmlExtensions
{
public static IHtmlString LinkToFile(
this HtmlHelper htmlHelper,
string filename
)
{
var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var file = htmlHelper.ViewContext.HttpContext.Server.MapPath(filename);
if (!File.Exists(file))
{
return MvcHtmlString.Empty;
}
var anchor = new TagBuilder("a");
anchor.Attributes["href"] = urlHelper.Content(filename);
anchor.SetInnerText("Art Work");
return new HtmlString(anchor.ToString());
}
}
,然后里面的观点简单地使用这个帮手:
grid.Column(format: @<text>@Html.LinkToFile((string)item.FileName)</text>)
尝试这样:
format: (item) =>
{
if (File.Exists(item.FileName))
{
return new HtmlString(string.Format("<a href=\"{0}\">Art Work</a>", @Url.Content(item.FileName)));
}
return string.Empty;
}
你试过这个代码吗? – 2012-07-09 21:56:19
不是真的达林。我使用了其中的一个代码片段,并将其用于该问题。 – 2012-07-09 21:59:43
我在说这个,因为这段代码不起作用。通常在将代码发布到Stack Overflow之前测试代码是一种很好的做法。 – 2012-07-09 22:01:45
太棒了!我是网络开发新手,所以这对我来说仍然是非常新颖的,非常感谢您的帮助! – Mykal73 2012-07-10 14:26:08