ASP.NET MVC はデータベースから Razor ビューをロードします 質問する

ASP.NET MVC はデータベースから Razor ビューをロードします 質問する

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());

これであなたの質問への回答がより良くなったと思います。

おすすめ記事