从文件路径asp.net mvc4

时间:2015-08-04 17:25:54

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我试图在我的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)

...

2 个答案:

答案 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='' />