ScottGuは、データベースからRazorビューをロードする(コメントセクションを確認してください)、それを実行する方法の例を持っている人はいますか?
ありがとう。
ベストアンサー1
確認してみるといいかもしれないファイルではなくデータベースからビューを取得するまたはVirtualPathProvider を使用して DLL から ASP.NET MVC ビューを読み込む
この件に関する前回の質問からコードを引用します。
他のページのメソッドでは、FileExists()
そこにあるテスト コードを、virtualPath にデータベースのエントリがあるかどうかを実際にチェックするいくつかの db コードに置き換えます。データベースは次のようになります。
Views --tablename
Path --view's virtual path
SomeOtherValue
...そしてあなたの電話は次のようになります
public class DbPathProvider : VirtualPathProvider {
public DbPathProvider() : base() {
}
public override bool FileExists(string virtualPath) {
Database db = new Database();
return db.Views.Any(w => w.Path == virtualPath);
}
public override VirtualFile GetFile(string virtualPath) {
return new DbVirtualFile(virtualPath);
}
}
そしてDbVirtualFileを変更します
public class DbVirtualFile : System.Web.Hosting.VirtualFile {
public DbVirtualFile(string path) : base (path) {
}
public override System.IO.Stream Open() {
Database db = new Database();
return new System.IO.MemoryStream(
db.Views.Single(v => v.Path == this.VirtualPath));
}
}
必要なければ、virtualPath は実際のファイルシステムに対応している必要はありません。これらの 2 つのクラスを実装することで機能をオーバーライドできます。
次に、新しいVirtualPathProviderをglobal.asaxに登録します。
HostingEnvironment.RegisterVirtualPathProvider(new DbPathProvider());
これであなたの質問への回答がより良くなったと思います。