ASP.NET MVCロードデータベースからのRazorビュー
asp.net-mvc (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());
私はこれがあなたの質問によく答えることを願っています
https://ffff65535.com
ScottGuは、私たちはデータベースからRazorビューを読み込むことができるべきだと述べました(コメントセクションをチェックしてください)。だから誰かがそれを行う方法の例を持っていますか?
ありがとう。