ScottGu는 우리가 load a Razor view from a database (코멘트 섹션을 확인) 할 수 있어야한다고 언급 했으므로 누구나 어떻게 할 수 있습니까?ASP.NET MVC로드 데이터베이스에서 면도기
감사합니다.
ScottGu는 우리가 load a Razor view from a database (코멘트 섹션을 확인) 할 수 있어야한다고 언급 했으므로 누구나 어떻게 할 수 있습니까?ASP.NET MVC로드 데이터베이스에서 면도기
감사합니다.
당신은 주제에 내 앞의 질문에서 코드를 복용 Pulling a View from a database rather than a file 또는 Using VirtualPathProvider to load ASP.NET MVC views from DLLs
확인 할 수 있습니다.
다른 페이지의 FileExists()
메서드에서 가상 경로에 데이터베이스 항목이 있는지 실제로 확인하는 일부 db 코드와 함께 테스트 코드를 대체합니다.
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하지 않는 DbVirtualFile을
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);
}
}
것 그리고 지금 우리는 수정 : 데이터베이스가 같을 것 실제 파일 시스템에 대응해야한다. 이 두 클래스를 구현하여 기능을 재정의 할 수 있습니다.
그런 다음 이렇게
HostingEnvironment.RegisterVirtualPathProvider(new DbPathProvider());
처럼의 Global.asax에 새 VirtualPathProvider을 등록 할 수 있습니다 더 나은이 질문에 대한 답변이 되었기를 바랍니다.
어쩌면 내가 누락되었지만 튜토리얼에서 해결책은 (http://www.umbraworks.net/bl0g/rebuildall/2009/11/17/ASP_NET_MVC_and_virtual_views)에 실제 파일이있는 것입니다. 디스크 (/View/Pages/Test.aspx)를 입력하고 "채우기"를 제공하면됩니다. 전체 페이지를 지정할 수있는 솔루션을 찾고 있습니다. – pbz
가상 경로와 관련하여 혼동을 기반으로 질문이 업데이트되었습니다. – Buildstarted
데이터베이스를 사용하지 않는 예제를 사용하고 있습니다. FileExists에서 "/View/Home/Test.cshtml"(내 가상 파일)을 확인하고 Open 메서드에서 새로운 MemoryStream (Encoding.ASCII.GetBytes ("
안녕
"))을 반환합니다. 이 작업을 수행 할 때 "Directory '[..] \ View \ Home'이 존재하지 않습니다. 파일 변경 모니터링을 시작하지 못했습니다." 이견있는 사람? 당신의 도움을 주셔서 감사합니다! – pbz