我创建了一个ImageController,用于从项目中的某个位置提供图像。现在我试图让它从" /Image/file.png"我的控制器,但我似乎无法做到正确。永远不会调用控制器(我在操作的第一行设置断点,它永远不会中断)。
我的路线:
routes.MapRoute(
"Image",
"Image/{file}",
new { controller = "Image", action = "Render", file = "" }
);
我的ImageController:
public class ImageController : Controller
{
//
// GET: /Image/
public ActionResult Render(string file)
{
var path = this.getPath(file);
System.Diagnostics.Debug.WriteLine(path);
if (!System.IO.File.Exists(path))
{
return new HttpNotFoundResult(string.Format("File {0} not found.", path));
}
return new ImageResult(path);
}
private string getPath(string file)
{
return string.Format("{0}/{1}", Server.MapPath("~/Content/Images"), file);
}
}
为什么我的项目不是来自" Images / {file}"到我的控制器?
答案 0 :(得分:1)
这可能是因为请求被路由到静态文件处理程序,因为url中的.png扩展名。您可以尝试将文件名和后缀作为单独的参数传递,如下所示:
routes.MapRoute(
"Image",
"Image/{filename}/{suffix}",
new { controller = "Image", action = "Render", filename = "", suffix = "" }
);
您的控制器操作将变为:
public ActionResult Render(string filename, string suffix)
它应该匹配这样的网址:
/Image/file/png