繁体   English   中英

Url.Action无法调用控制器方法

[英]Url.Action fails to call controller method

我正在尝试使用此视图在页面上显示一些图像

Details.cshtml

@foreach (var imagePath in Model.Images)
{
    <img src="@Url.Action("GetImage", "Receiving", new { @imagePath = imagePath })" />
}

ReceivingController.cs

public ActionResult GetImage(string imagePath)
{
    var folder = ConfigurationManager.AppSettings["ImagesPath"];
    var path = Path.Combine(folder, imagePath);
    byte[] image = System.IO.File.ReadAllBytes(path);
    return File(image, "image/jpg");
}

但是,当我在控制器中设置一个断点时,它永远不会被命中,并且图像当然无法加载。

我可以看到从视图传递的值是一个路径,例如"C:\\\\inetpub\\\\wwwroot\\\\SiteName\\\\Images\\\\3000\\\\1\\\\1\\\\2.jpg"

我试图将@Url.Action' to更改@Url.Action' to @ Html.Action`只是因为我不知道还要尝试什么,但是我遇到了错误

使用自定义TextWriter时,OutputStream不可用

我不明白为什么未调用控制器。

我注意到,如果只是导航到URL Receiving\\GetImage\\whyareyounotworking ,就会触发控制器操作。

我尝试添加以下路线,但没有更改

routes.MapRoute(
    name: "GetImage",
    url: "receiving/GetImage/{imagePath}",
    defaults: new { controller = "Receiving", action = "GetImage" }
);

删除此:

@imagePath

因此,您将有一个类似url.action的内容:

<img src="@Url.Action("GetImage", "Receiving", new { imagePath = imagePath })" />

似乎与传入的字符串有关。

从文件路径的末尾删除.jpg之后, .jpg回控制器,我的断点现在命中了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM