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ビュー読み込むことができるべきだと述べました(コメントセクションをチェックしてください)。だから誰かがそれを行う方法の例を持っていますか?

ありがとう。





razor