【问题标题】:Is there a way to use build a web page using only objects in ASP.Net?有没有办法只使用 ASP.Net 中的对象来构建网页?
【发布时间】:2014-05-07 18:38:48
【问题描述】:

我不确定如何准确地用词正确,但要点是我们已经有一个系统可以从服务器接收脚本,该服务器提供一些 UI 的布局。我们为桌面客户端 (WPF) 动态呈现此 UI。我们想为 Web 做一些类似的事情,以提供一些我们不想安装胖客户端的功能子集。虽然只是创建一个呈现 html/aspx 字符串的服务器控件,例如相当容易,生成通过 JS/AJAX 等处理丰富 ui 体验的文本......不是那么多。如果我们使用 Java,Vaadin 将是完美的,但 Windows Silverlight 需要一个插件。我在 ASP 上找到的所有信息都只是简单地将文本写入响应输出,但我想...

  1. 获取到自定义 HttpModule 的请求。
  2. 查询适当的脚本并通过 C# 中的 System.Web 对象呈现它。
  3. 将对象或页面或其他内容返回给 ASP.Net 以服务于用户。
  4. 处理事件并向用户提供一般交互性。

这样的事情在 ASP.Net 中是否可行?我将如何将自己插入页面生命周期,以便我可以返回动态创建的 Page 实例或访问正在创建的页面实例并添加到它?

【问题讨论】:

  • 担心给你不好的建议,我自己正在寻找一些这样的信息。我有点决定研究 MVC,因为它允许您在某种程度上简单地连接到数据(或服务)并且似乎想为您做一些工作。
  • 您的自定义 HttpModule 可以将请求路由到动态创建控件的 ASPX。你卡在哪一部分?您的每个要点都应该是他们自己的问题。
  • Silverlight 需要插件,但对于 Java 来说没问题,这是怎么回事?你认为 Java 是如何做到这一点的?我的意思是,Silverlight 还存在许多其他问题,但在这种情况下,这似乎是一种双重标准。
  • Vaadin 不使用插件。它是一个 Web 应用程序框架,您可以在其中使用 Java 进行开发,并使用 HTML5 和 Javascript 生成一个富互联网应用程序。从开发人员的角度来看,他只是使用 Java 和 Vaadin API 来创建一个交互式且功能强大的站点。从用户的角度来看,他们只是去一个网站,所以没有什么可安装的。
  • @David 我可以在 Begin/EndRequest 中将文本写入响应,但似乎无法访问页面或动态更改它的方法。此外,项目符号只是工作流程,#3 确实是我在帖子末尾提出的唯一问题。

标签: asp.net


【解决方案1】:

我创建了一个小测试页面。也许这足以让你继续前进。您可以使用它的各种地方,以及带有自己的标记和事件处理程序的自定义控件。我希望这会有所帮助!

Test.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="DynamicFormTest.Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

Test.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DynamicFormTest
{
    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button button1 = new Button();
            button1.Text = "Hello World";
            button1.Attributes["onclick"] = "alert('Hello!')";
            this.form1.Controls.Add(button1);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 2020-05-26
    • 2021-12-13
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多