0

最終書き込み時刻を更新するには、マスター ページで実行されているスクリプトの名前を取得する必要があります。

私はこれを使用しています:

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

これはdefault.aspxで機能しますが、ビュー内にある場合、LastWriteTimeを取得するためのファイルへの物理パスを特定できません。

これに対する解決策はありますか?確かに、ここで信じられないほど簡単なものが欠けています。

ありがとう!

4

2 に答える 2

1

System.Web.Routingについて私が知っていることから、ルーティングはIISで行われるため、ビューの実際の物理パスを取得することは不可能です。あなたはいつでも使用を試みることができます

this.Request.PhysicalPath

物理パスを取得しますが、次のようなものが返されます:

C:\Projects\MySolution\MyProject\ViewFolder\ViewAction
于 2009-03-29T13:56:26.150 に答える
1

この回答これにも基づいて、私は次のような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") %>
于 2011-09-29T20:20:17.087 に答える