【问题标题】:trying to create a dynamic link in MVC 3尝试在 MVC 3 中创建动态链接
【发布时间】:2012-07-10 09:39:21
【问题描述】:

我正在处理我公司的 Intranet 站点,在其中一个页面上,我需要包含指向 .PDF 文件的链接(如果存在)。没问题,我让它工作得很好。如果 .PDF 不存在,我遇到的问题是更改链接。这是我目前拥有的:

, 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 进行了一些尽职调查,但没有找到任何东西。谁能告诉我哪里出错了?

【问题讨论】:

    标签: asp.net-mvc-3 dynamic hyperlink webgrid


    【解决方案1】:

    我肯定会编写一个自定义助手来负责生成正确的链接:

    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>)
    

    【讨论】:

    • 太棒了!我是网络开发的新手,所以这对我来说还是很陌生,非常感谢您的帮助!
    【解决方案2】:

    试试这样的:

    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;
    }
    

    【讨论】:

    • 不是真的达林。我使用了我拥有的一段代码,并根据问题对其进行了调整。
    • 我这么说是因为这段代码不起作用。通常,最好在将代码发布到 Stack Overflow 之前对其进行测试。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2023-03-18
    相关资源
    最近更新 更多