ScottGuは、 データベースからRazorビューをロードする (コメントセクションを確認する)ができるはずだと述べました。
ありがとう。
ファイルではなくデータベースからビューをプルする または 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());
これがあなたの質問にもっとよく答えることを願っています。