0

私はMVCに非常に慣れておらず、仮想パスプロバイダーを突き刺そうとし、画面に日時を表示しようとしています。パスは正常に機能し、アプリケーションによって認識されますが、detetime は表示されず、代わりに文字列 "Time is: @DateTime.Now" が表示されます。しかし、仮想ファイルを直接返すと、時間が正確に表示されます。

次のコードは、仮想ファイルを取得します。

  public override VirtualFile GetFile(string virtualPath)
    {
        //if (virtualPath.StartsWith("/test") || virtualPath.StartsWith("~/test"))
            return new StringVirtualFile(virtualPath);

        //return base.GetFile(virtualPath);
    }

前述したように、上記のコードの一部をコメントアウトすると、時刻が正しく表示されることがわかります。

仮想ファイルのコード:

  public class StringVirtualFile : System.Web.Hosting.VirtualFile
    {
        public StringVirtualFile(string path)
            : base(path)
        {
        }
        public override System.IO.Stream Open()
        {
            return new MemoryStream(Encoding.UTF8.GetBytes("Time is: @DateTime.Now"));
        }
    }

任意の提案をいただければ幸いです。

4

1 に答える 1

0

"@" は Razor ビュー エンジン用です。string.format("Time is: {0}", DateTime.Now") を実行するか、VirtualFile の代わりに ASP MVC のルーティング、コントローラー、ビュー (ここでは "@" を使用できます) を使用します。

ルーティング:

于 2013-04-07T10:18:17.960 に答える