【问题标题】:ASP.NET C# Properly Generating HTML for PageASP.NET C# 为页面正确生成 HTML
【发布时间】:2009-07-29 01:38:02
【问题描述】:

我意识到这可能是我应该知道的基本知识,但我正在自学 C# 和 asp.net,所以在这一点上我有点迷茫。

我现在有 2 页。一种是空白的 .aspx(包括 aspx.cs 文件),并且从 cs 文件中的 Page_Load 函数为其生成 html。 HTML 非常简单,只是一个图像和一些文本。

第二个文件是一个 shtml 文件,里面有很多东西,服务器端包含、可编辑和不可编辑的区域。我想把我的 webapp 放到这个文件中。我的 asp.net 应用程序使用 Response.Write 来写出 html。这个页面不能很好地流动,因为它所做的只是将它写在页面的顶部,这是因为它首先运行并在顶部生成它。

如何才能在页面内生成 HTML 代码,例如在特定的 DIV 中,这样它就不会弄乱页面。学习如何做到这一点的起点在哪里。

我应该注意,我不需要用户的任何交互。所有这些都应该立即生成。

【问题讨论】:

    标签: c# asp.net html


    【解决方案1】:

    我认为您需要阅读一些基本的 ASP.Net 文档和教程。 Response.Write 不是正确的方法 - 您需要了解 ASP.Net 页面生命周期的工作原理以及如何使用 WebControls 呈现 html。

    ASP.Net 试图抽象出大部分情况下必须手动创建 html。

    【讨论】:

      【解决方案2】:

      所以,如果我正确理解了这些问题。 您已经有一个现有的页面/应用程序(shtml 文件),您想通过在现有页面中包含来自 ASP.NET 页面的输出来使用一些新的 ASP.NET 组件进行扩展?

      这不是 ASP.NET “支持”开箱即用的东西,您“将无法”使用 SSI 执行 aspx 页面。但是你可以做相反的事情,ASP.NET 页面确实支持SSI。因此,如果您没有在 shtml 文件中使用任何其他脚本,这可能是一个解决方案。

      否则,唯一常见的解决方案是使用 AJAX 框架并让它从现有页面中调用 ASP.NET,或者使用 iframe 解决方案。在这两种情况下,客户端都将负责调用 ASP.NET 页面并合并结果。

      然后您在控制 ASP.NET 页面的输出时遇到问题?

      多态播客在Controlling HTML in ASP.NET WebForms 上有一篇好文章。

      【讨论】:

        【解决方案3】:

        您可以在div内的页面中添加Literal control

        <div>
           <asp:Literal ID="litMarkup" runat=server />
        </div>
        

        然后在您的代码隐藏中:

        litMarkup.Text = "<strong>Your markup</strong>";
        

        【讨论】:

          【解决方案4】:

          我不知道这对您有多好,但是您可以尝试使用 iframe 来容纳 ASP.NET 页面吗?这应该将其保留在指定区域中,并且不会覆盖您的 shtml 文件。这可能是需要考虑的事情。

          【讨论】:

          • 另外,顺便说一句,如果这是一个纯 ASP.NET 页面,您可以使用文字控件或可以保存生成的 HTML 的占位符。
          【解决方案5】:

          如果有必要从 C# 代码生成 HTML 输出,并且您会在多个地方使用它,我想您可能会想到所谓的 ASP.NET 自定义控件(不要混淆使用“用户控件”-尽管您可能也可以使用其他人建议的文字控件将解决方案与这些组合在一起)。 MSDN 文档将是一个很好的起点。不过,一般来说,从代码中自己写出 HTML 模型(就像使用 CGI 应用程序一样)不是通常的 ASP.NET 开发模型,因为它在很大程度上违背了使用 ASP 的意义.NET。如果您正在编写自己的 Web 控件,您通常会想要做这种事情,尽管这可能正是您正在做的事情(很难从描述中看出)。

          【讨论】:

            猜你喜欢
            • 2021-01-13
            • 1970-01-01
            • 2021-10-19
            • 1970-01-01
            • 2012-06-26
            • 1970-01-01
            • 2020-12-15
            • 2011-05-14
            • 1970-01-01
            相关资源
            最近更新 更多