نحوه تولید پویای صفحات از طریق دیتابیس در ASP.NET MVC
نویسنده: مهدی قاسمی
تاریخ: ۱۳۹۵/۱۰/۱۸ ۱۱:۲۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class Page
{
public int Id { get; set; }
public string Path { get; set; }
public string Content { get; set; }
} public class CustomVirtualPathProvider : VirtualPathProvider
{
public override bool FileExists(string virtualPath)
{
return base.FileExists(virtualPath) || FileExistsInDatabase(virtualPath);
}
public override VirtualFile GetFile(string virtualPath)
{
return base.FileExists(virtualPath)
? base.GetFile(virtualPath)
: new CustomVirtualFile(virtualPath, GetFileFromDatabase(virtualPath));
}
private bool FileExistsInDatabase(string virtualPath)
{
virtualPath = virtualPath.Replace("~", "");
return new DatabaseContext().Pages.Any(v => v.Path == virtualPath);
}
private byte[] GetFileFromDatabase(string virtualPath)
{
virtualPath = virtualPath.Replace("~", "");
return Encoding.UTF8.GetBytes(new DatabaseContext().Pages.First(v => v.Path == virtualPath).Content);
}
} public class CustomVirtualFile : VirtualFile
{
private readonly byte[] _content;
public CustomVirtualFile(string virtualPath, byte[] content)
: base(virtualPath)
{
_content = content;
}
public override Stream Open()
{
return new MemoryStream(_content);
}
} protected void Application_Start()
{
HostingEnvironment.RegisterVirtualPathProvider(new CustomVirtualPathProvider());
//...
}