我试图在我的asp .net mvc4项目的根文件夹之外显示图像 - 无济于事。 我在.master页面和.ascx控件中尝试过的img标签是:
<img src='@Url.Action("someimage", "imagesController")' />
我的控制器如下:
class imagesController : Controller
{
public ActionResult someimage()
{
return File(@"C:\...\image.png", "image/png");
}
}
上面的方法没有被调用,而是我得到了:http://localhost:62372/Builder/@Url.Action(%22someimage%22,%20%22imagesController%22)无法加载资源:服务器响应状态为500(内部服务器错误)
这是我的路由,以防万一:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
//--default routing and default route--
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Login", action = "OpenLogin", id = UrlParameter.Optional } // Parameter defaults
);
}
我收集了有关错误的更多信息: 例外信息:
异常类型:ArgumentException
异常消息:路径中的字符非法。
at System.IO.Path.CheckInvalidPathChars(String path)
在System.IO.Path.Combine(String path1,String path2)
...
答案 0 :(得分:2)
一种解决方案是在页面加载之前查找图像路径并将其传递给ViewBag变量中的视图。这不能解决您的500错误,但您可能不需要以这种方式解决此问题。
控制器:
public ActionResult ImagePage()
{
ViewBag.ImageSrc = GetMeMyImagePath();
return View();
}
查看
<img src='@ViewBag.ImageSrc' />
答案 1 :(得分:0)
最后,我通过使用这种语法来实现它:
<img src='http://domain/images/someimage' alt='' />