开发者

How to add html to an aspx C# codebehind page?

开发者 https://www.devze.com 2023-03-18 04:02 出处:网络
I have access to a server with a开发者_Go百科spx pages. I need to add a title, parapgraphs, etc to a page. The page currently only has the following line:

I have access to a server with a开发者_Go百科spx pages. I need to add a title, parapgraphs, etc to a page. The page currently only has the following line:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Access.Login" %>

I do not have access to the CS files, just the DLL. Anyway, when I try to add any html to the document nothing changes. I am able to change the CSS, and if I remove the "inherits" then whatever HTML I have gets displayed, but when the "inherits" is there only the default page gets displayed and none of my additions.

Admittedly I am new to ASP and moreover I am not trying to become a guru just to add some HTML to a page, but any advice would be great, thanks!


Try putting your Page_Load embedded in the .aspx and add controls that way:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Access.Login" %>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e) {
        if (!Page.IsPostBack) {
            Controls.Add(whatever);
        }
    }
</script>

<!-- Try this if the above does not work -->
<script runat="server">
        new protected void Page_Load(object sender, EventArgs e) {
        base.Page_Load(sender, e);
            if (!Page.IsPostBack) {
                Controls.Add(whatever);
            }
        }
</script>


Fundamentally, I'm afraid this is not possible. .NET is a single-inheritance language/framework. So when it says Inherits="Access.Login" that means you can only have it use Access.Login OR your code-behind, but not both.

That said, you could jump through some crazy hoops to accomplish your goal. Like create a brand new "wrapper" page, then in the code-behind fire off an http request to the page you want. Load the response, which will just be a really long string into a 3rd-party DOM parser, or if you're confident you're getting 100% valid XML back, use .NET's built-in XmlDocument or XDocument to parse the page, find your html elements, make your changes, then do a Response.Write with your modified content.

And that's a real-life example of going around your elbow to get to your...


I am not 100% certain this will work, but you could have a code-behind file inherit from Access.Login and use the new (override will not work if Page_Load isn't marked as virtual) keyword with Page_Load. Then you could use Inherits="YourAssembly.NewLogin".

The part I am not sure about is whether or not asp.net uses the page class or your subclass to call the Page_Load method. If page_Load was virtual, it wouldn't matter, but since it isn't the new will only be called if the page is cast into your subclass. It is worth a try though.

0

精彩评论

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