В ASP.NET MVC как получить имя файла запускаемого скрипта? - PullRequest
0 голосов
/ 25 марта 2009

Мне нужно получить имя сценария, выполняемого на главной странице, чтобы обновить время последней записи.

Я использую это:

System.IO.File.GetLastWriteTime(Server.MapPath(Request.FilePath))

, который работает для default.aspx, но если он находится внутри View, я не могу определить, какой физический путь к файлу получить для LastWriteTime.

Есть ли решение для этого? Конечно, я упускаю что-то невероятно легкое здесь.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Исходя из этого ответа и этого ответа , я написал html-помощник так:

    public static string ScriptBlock(this HtmlHelper html, string path)
    {
        return string.Format("<script src=\"{0}{1}\" type=\"text/javascript\"></script>\r\n", VirtualPathUtility.ToAbsolute(path), DateLastWriteFile(html.ViewContext.HttpContext.Server.MapPath(path)));
    }

    public static string CSSBlock(this HtmlHelper html, string path)
    {
        return string.Format("<link href=\"{0}{1}\" type=\"text/css\" rel=\"Stylesheet\" ></link>\r\n", VirtualPathUtility.ToAbsolute(path), DateLastWriteFile(html.ViewContext.HttpContext.Server.MapPath(path)));
    }

    public static string DateLastWriteFile(string path)
    {
        return "?Date=" + File.GetLastWriteTime(path).ToString("yyyyMMddhhmmss");
    }

Затем я просто вызываю метод на моей главной странице или странице просмотра, после включения правильного пространства имен в верхней части страницы просмотра / главной страницы:

   <%= Html.CSSBlock("~/Content/Site.css") %>
1 голос
/ 29 марта 2009

Из того, что я знаю о System.Web.Routing, маршрутизация происходит в IIS, что делает невозможным получение истинного физического пути вашего View. Вы всегда можете попробовать использовать

this.Request.PhysicalPath

чтобы получить физический путь, но он вернет что-то вроде:

C:\Projects\MySolution\MyProject\ViewFolder\ViewAction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...