私は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"));
}
}
任意の提案をいただければ幸いです。