C# 无法在razor视图中使用扩展方法

C# 无法在razor视图中使用扩展方法,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在尝试显示本地存储(而不是内容文件夹)中的图像。我使用的图像标签如下所示 @if (Model.PreviousCoverPic != null) { <img src="@Url.Action("ServeImage", "Profile",new {path = Model.PreviousCoverPic})" alt="Previous Profile Pic" /> } 它返回图像的FileResult,以便显示。但是,渲染视图时不会显示图像。我检查了Mode

我正在尝试显示本地存储(而不是内容文件夹)中的图像。我使用的图像标签如下所示

@if (Model.PreviousCoverPic != null)
{
    <img src="@Url.Action("ServeImage", "Profile",new {path = Model.PreviousCoverPic})" alt="Previous Profile Pic" />
}

它返回图像的FileResult,以便显示。但是,渲染视图时不会显示图像。我检查了Model.PreviousCoverPic值,它不为空。我错过了什么?如何从本地文件夹实现显示方法?另外,我按照问题的答案添加了类的名称空间,该类包含扩展方法,但图像仍然无法在视图中渲染。

根据以下来源

这个答案呢

扩展方法不适用于路由
Url.Action
。您可以使用继承来创建带有操作的基类。这样,所有继承的类都将具有操作,并且对
Url.action
的调用将有效

public abstract class MyBaseController : Controller {
    public ActionResult ServeImage(string path) {...}
}

public class ConcreteController : MyBaseController {...}

您是否在cshtml中包含了定义扩展方法的名称空间?我在Web.config文件中包含了名称空间,以便它包含在所有cshtml文件中。我认为它不会像这样工作。将它包含在您的cshtml中,并让我知道它是如何工作的。我还将它添加到cshtml文件中,并使用@using WebProj.Extensions.Controller,但它仍然不工作。谢谢,我是这样工作的。我认为使用扩展方法会更干净。有没有一种方法可以使用扩展方法使其工作?我现在想不出任何东西,而且还没有找到任何能够做到这一点的文档。你是对的。操作方法不能用作扩展方法。看看这个问题。请修改您的答案以包含该信息。我还可以返回多个内容类型,如“image/jpg”、“image/png”等。标题一次只包含一种类型。我建议将文件映射到其mime类型,并将其包含在流结果中。但这是另一个问题。这是有答案的。
public abstract class MyBaseController : Controller {
    public ActionResult ServeImage(string path) {...}
}

public class ConcreteController : MyBaseController {...}