【问题标题】:How to add html to an aspx C# codebehind page?如何将 html 添加到 aspx C# 代码隐藏页面?
【发布时间】:2011-07-09 08:49:42
【问题描述】:

我可以访问带有 aspx 页面的服务器。我需要在页面中添加标题、段落等。该页面目前只有以下行:

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

我无权访问 CS 文件,只有 DLL。无论如何,当我尝试将任何 html 添加到文档时,没有任何变化。我可以更改 CSS,如果我删除了“继承”,那么我会显示任何 HTML,但是当“继承”存在时,只会显示默认页面,而我的添加内容都不会显示。

诚然,我是 ASP 新手,而且我并不想成为专家,只是为了向页面添加一些 HTML,但任何建议都会很棒,谢谢!

【问题讨论】:

  • 您可以访问 Site.master 页面吗?
  • 您将 html 作为字符串添加到后面的代码中,具体取决于您在做什么。您也可以直接将 html 添加到 aspx 文件中。所以这真的取决于你想要做什么,你能详细说明一下并发布更多代码吗?
  • 也许该页面需要您通过身份验证才能看到内容?
  • @Spacemancraig,我只想拿这个页面,目前只有一行,然后添加一些东西/任何东西。一段,一行,无所谓。我只是希望能够以某种方式修改页面。

标签: c# asp.net html


【解决方案1】:

尝试将 Page_Load 嵌入到 .aspx 中并以这种方式添加控件:

<%@ 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>

【讨论】:

  • 您也可以只从 Access.Login 继承,除非它被密封并将您的 Inheritance 属性替换为“MyClass”...
  • +1 用于建议继承。 ofosho:在做任何疯狂的事情之前先试试这个,就像我的回答一样......
  • 以下链接可能包含更多信息:msdn.microsoft.com/en-us/magazine/cc163445.aspx
  • @gangelo,我试过了,但似乎没有用。无论如何,我都可以使用 JS 创建/注入 HTML。我只是想看看是否有一个快速的解决方案可以将 html 添加到文件中。
  • @ofosho:您必须向我们展示您如何尝试添加控件的示例(通过我发布的方法)。这似乎并不难,但我是盲目的。
【解决方案2】:

基本上,恐怕这是不可能的。 .NET 是一种单继承语言/框架。因此,当它说 Inherits="Access.Login" 时,这意味着您只能使用 Access.Login 或您的代码隐藏,但不能同时使用两者。

也就是说,您可以跳过一些疯狂的障碍来实现您的目标。就像创建一个全新的“包装器”页面,然后在代码隐藏中触发一个 http 请求到您想要的页面。将响应加载到第 3 方 DOM 解析器中,这将是一个非常长的字符串,或者如果您确信自己得到了 100% 有效的 XML,请使用 .NET 的内置 XmlDocument 或 XDocument 来解析页面,找到您的 html 元素,进行更改,然后使用您修改的内容执行 Response.Write。

这是一个真实的例子,即绕过你的肘部到达你的......

【讨论】:

    【解决方案3】:

    我不能 100% 确定这会起作用,但您可以从 Access.Login 继承一个代码隐藏文件,并在 Page_Load 中使用新的(如果 Page_Load 未标记为虚拟,则覆盖将不起作用)关键字。然后你可以使用 Inherits="YourAssembly.NewLogin"。

    我不确定的部分是 asp.net 是使用页面类还是您的子类来调用 Page_Load 方法。如果 page_Load 是虚拟的,那没关系,但由于它不是 new ,只有在页面被转换到您的子类时才会调用。不过值得一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2014-05-29
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2014-10-03
      相关资源
      最近更新 更多