gpt4 book ai didi

c# - 如果文件存在于 asp.net mvc 中,则返回链接

转载 作者:行者123 更新时间:2023-12-02 21:34:39 25 4
gpt4 key购买 nike

我需要显示文件的链接,但前提是该文件存在。到目前为止,我已经尝试扩展 UrlHelper、HtmlHelper 和 MvcHtmlString,但它们似乎都没有给出我需要的结果。

我确信我做错了什么,但我不知道那是什么。 UrlHelper 扩展看起来非常接近,但 View 将链接呈现为文本而不是 anchor 。

public static class UrlHelperExtensions
{
public static string Pdf(this UrlHelper helper, string fileName, string directory)
{
string _fileName = fileName + ".pdf";
string _directory = directory + "/";

string root = "~/Content/Templates/";

string path = HttpContext.Current.Server.MapPath(root + _directory + _fileName);

if (File.Exists(path))
{
return helper.Content("<a href=\"" + root + _directory + _fileName + "\" target=\"_blank\">Download Template</a>");
}
else
{
return "";
}
}
}

然后@Url.Pdf(Model.Item.Number, "Retail") 给我文本

<a href="~/Content/Templates/Retail/1001.pdf" target="_blank">Download Template</a>

在页面上而不是实际的链接。

最佳答案

您必须像这样使用HtmlString:

public static HtmlString Pdf(this UrlHelper helper, string fileName, string directory)
{
string _fileName = fileName + ".pdf";
string _directory = directory + "/";

string root = "~/Content/Templates/";

string path = HttpContext.Current.Server.MapPath(root + _directory + _fileName);

if (File.Exists(path))
{
return new HtmlString(helper.Content("<a href=\"" + root.Replace("~", "") + _directory + _fileName + "\" target=\"_blank\">Download Template</a>"));
}
else
{
return new HtmlString("");
}
}

编辑:修复了root字符串。

关于c# - 如果文件存在于 asp.net mvc 中,则返回链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com