2

会社のイントラネット サイトに取り組んでいます。.PDF ファイルが存在する場合、そのページの 1 つに、.PDF ファイルへのリンクを含める必要があります。問題ありません。十分に機能するようになりました。私が抱えている問題は、.PDF が存在しない場合にリンクを変更することです。これが私が現在持っているものです:

, grid.Column(format: (item) => (File.Exists(item.FileName)==true ? @<a href="@Url.Content(item.FileName)">Art Work</a> : Html.Raw(""))) 

エラーが表示されます: 引数 3: 'ラムダ式' から 'System.Func' に変換できません

および 'System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)' に最も一致するオーバーロードされたメソッドには、無効な引数がいくつかあります

Google でデューデリジェンスを行いましたが、何も見つかりません。誰かが私が間違っているところを教えてもらえますか?

4

2 に答える 2

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>)
于 2012-07-09T21:54:53.630 に答える
0

次のようなことを試してください:

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-09T21:45:22.030 に答える