开发者

Dynamic Pages From a Database in C#

开发者 https://www.devze.com 2022-12-13 14:05 出处:网络
Forgive me if this has already been asked somewhere, but I cannot figure out the best way to accomplish this task. I want to be able to create a rendering system that will allow me to render out conte

Forgive me if this has already been asked somewhere, but I cannot figure out the best way to accomplish this task. I want to be able to create a rendering system that will allow me to render out content from thousands of different .aspx pages without having to create thousands of .aspx pages. That being said, I still want to be able to render out the appropriate .aspx page if it exists in my code.

For example, when a request is made to the site, I want to check and see if that URL is in the database, if it is, then I want to render the content appropriately. However, if it doesn't, then I want it to continue on to rendering the real .aspx p开发者_开发百科age.

In trying to use an HTTPModule, I cannot get the page that exists in the database to write out the appropriate content. Here's my code.

    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication application = sender as HttpApplication;
        Uri url = application.Context.Request.Url;

        //Checks to see if the page exists in the database
        PageInformation page = PageMethods.GetPageFromUrl(url.AbsolutePath);

        if (page != null)
        {
            string renderedPage = Renderer.RenderPage(page);
            application.Context.Response.Write(renderedPage);
        }
    }

However, when trying to use an HTTPHandler, I can't get the real .aspx pages to render appropriately because the *.aspx verb is being dealt with by the handler.

If anyone has any better ideas on how to completely re-design this, I'm completely open to that as well. Thanks.


This will do the trick:

Type page_type = BuildManager.GetCompiledType ("~/page.aspx");
Page page = (Page) Activator.CreateInstance (page_type);
page.ProcessRequest (Context);


I think you're lookign for a simple URL rewriting example.

So you have a single page "default.aspx" that could take an argument of the content you want to display "default.aspx?page=home", but you don't want the nasty query string part "?page=home".

this is best solved by URL rewriting which can be used as an ISAPI module in IIS. So instead of the URL string above, people see a page called "home.aspx", and the web server translates this into "default.aspx?page=home" for your page which can go get the content for the "home" page out of the DB and display it on the screen.

Here's a page with more information on a good implementation of this process:

http://www.opcode.co.uk/components/rewrite.asp


I believe this shows how to process the "normal" pages inside a handler

other example

0

精彩评论

暂无评论...
验证码 换一张
取 消