【问题标题】:Is C# using any Scripting language for Events?C# 是否对事件使用任何脚本语言?
【发布时间】:2014-01-27 06:27:53
【问题描述】:

我的一个朋友(一个 php 开发人员)告诉我,C# 没有能力来管理事件,这意味着事件不是由 C# 代码生成或控制的(例如 Button ClickSelected Index Changing 等)。它使用其他一些脚本语言,如JavaScript,他告诉我它的JScript。而且标签、按钮等所有控件都是客户端的,不需要进入服务器。

那么我的问题是为什么runat="server" 用于所有asp 控件?他还说重定向(Response.Redirect)也发生在客户端,它不是服务器端,C# 没有能力这样做,因为它是PROGRAMMING LANGUAGE 而不是SCRIPTING LANGUAGE

我对他的回答完全感到困惑,我对他的回答不满意。谁能告诉我这是什么?

  1. 什么是runat="server"?如果所有控件都是客户端呢?
  2. c# 是否具有重定向、事件生成、处理等功能?
  3. 如果 c# 没有能力,那么 windows 使用哪种脚本语言?以及它如何独立于浏览器工作?
  4. Response.Redirect 呢?是客户端吗?那么它是如何工作的呢?
  5. ASP 是否为events 使用任何Scripting language

我是C# 的新手。可能这是一个糟糕的问题,但有人可以给出正确的答案吗?我完全糊涂了。

按事件表示,Button_Click、SelectedIndexChanged 等事件
我在这里提到了 C#,因为我使用的是 C#,
谢谢

【问题讨论】:

  • 这有点像“你不能开车。引擎可以。”但真的吗?
  • 在看到您对我的回答的评论后,我觉得有必要澄清一下您所说的“事件”是什么意思。您是指诸如有人单击按钮或更改下拉选择之类的事件,还是指诸如服务器自己遇到事件并通知网页之类的事件?
  • 嗨 @Sinaesthetic 事件,如 Button_Click、SelectedIndexChanged 等,我在问题中提到了它,谢谢
  • 好的,那么下面的答案就是你要找的。​​span>

标签: c# asp.net c#-4.0


【解决方案1】:

这不是语言问题,而是框架/技术问题。例如,ASP.net Web 表单可以处理代码中的事件,类似于您在 Windows 应用程序中的处理方式,但它实际上只是包装 http 请求。在 MVC(也是 C#)中,您通过使用标准 http 动词(get、post、put、delete 等)与控制器交互来处理页面“事件”。

我会告诉他,在这种情况下,php 也不处理事件。由于 php 和 asp 都是服务器端语言,它们都响应 http 请求,而不是事件。但是点击告诉浏览器做一些事情并与服务器通信。 javascript会处理事件,然后与服务器通信,但关键是,他的论点有点混乱。

其他答案:

  1. Runat 服务器只是告诉 asp 你想在 服务器,因此它创建了一些对象和对 html 元素的引用 这样您就可以在服务器端代码中与它们进行交互。
  2. 是的
  3. Windows 未使用脚本语言。您的 asp 应用程序是 使用您编写的任何一种语言。但是,ASP.net 确实会生成一些 javascript 以模拟 Windows 桌面编程风格。
  4. Response.Redirect 发生在服务器端,它只是告诉框架构建一个 将转换为正确的 HTTP 响应的对象。

您可能想学习一些 Web 开发的基础知识。具体来说 http 是如何无状态的以及 http 动词是如何工作的。当您了解不使用框架时发生的事情时,更容易理解框架在做什么。

更新: 编辑后,我重新阅读了您的帖子,我知道问题出在哪里。你的朋友基本上是对的。 C# 不是客户端语言,所以它不能对页面事件做出反应——所以他是正确的。然而,ASP.net 所做的是生成 javascript 来弥补这一差距。相反,ASP/MVC 不这样做,因此您必须编写与控制器对话的 javascript(甚至只是基本的表单提交),然后您必须相应地处理服务器响应。

所以他是对的,你不能直接写C#代码来响应页面事件。但是,如果您使用 ASP.net 在 C# 中进行开发,它将允许您使用 C# 编写代码并为您生成必要的 javascript。从您的角度来看,它几乎是无缝的。

【讨论】:

  • 您好,先生,您是说 c# 有能力在没有“某些”脚本语言的帮助下生成和管理事件,这与 PHP 不同?
  • 同样,在 HTTP 中,没有“事件”的概念。您正在做的是让浏览器(或 javascript)处理该事件,然后创建一条发送到服务器的 HTTP 消息。碰巧的是,在 ASP 中,它通过使它看起来像一个事件来“隐藏”它不是事件的事实。所以你的问题的实际答案是肯定的。 ASP.net 处理事件。但是,它根本与服务器语言无关。
【解决方案2】:

我认为也许需要了解您与朋友的对话背景。看来您指的是 ASP.net,而不是一般的 C#。

1.什么是 runat server 以及为什么所有控件都是客户端

在 ASP.net 世界中需要理解的是设计时、服务器端和客户端之间的区别。在页面的基本生命周期中,编译器将使用设计时页面来了解如何在服务器端构建控制树。标记为 runat="server" 的控件告诉编译器,作为设计一部分的控件需要构成将在服务器上构建的控件树的一部分。

2.c#是否具备重定向、事件生成、处理等能力

上下文在这里很重要我怀疑我们不是在谈论一般的 C#,而是在谈论 ASP.net? ASP.net 使用事件作为与来自服务器的请求进行交互的方式。当您单击 ASP.net 中的典型页面时,客户端 javascript 挂钩将捕获 onlick 事件并构造发送到服务器的请求。然后页面会将视图状态、事件和事件参数回传到服务器。服务器端将从视图状态重建控制树,并根据事件和事件参数在服务器上引发适当的事件。如果您为事件设置了服务器端挂钩,您将像捕获任何事件一样捕获它们。重定向也会发生在服务器端代码中。

3。如果 c# 没有能力,那么 windows 使用哪种脚本语言?以及它如何独立于浏览器工作

C# 不是一种脚本语言,它是编译的,嗯……为了简洁起见,我们使用它编译。 ASP.net 页面通常是 C# 服务器端代码和客户端 JavaScript 代码的组合。客户端会捕获事件并将请求传递到服务器端。

4. 那么 respose.redirect 呢?是客户端吗?那么它是如何工作的

Response.redirect 将是服务器端而不是客户端。如果您需要重定向到页面客户端,您可以使用 javascript window.location.href = '...'; 或类似的东西

【讨论】:

  • 您好,先生,“ASP.net 页面通常是 C# 服务器端代码和客户端 javascript 代码的组合”...如果我在浏览器中禁用了 JavaScript 会发生什么?这些活动是否有效?
  • 在某些边缘情况下它仍然可以工作。在大多数情况下,尽管您的页面会损坏。
【解决方案3】:

上下文:网络……否则你确定他/她是朋友吗:)

  • 如上所述,它不是“语言”,而是您选择的 ASP.net 风格

  • 如果是Web Forms,当然,ASP.Net 可以在客户端使用 Javascript 并在服务器端使用任何 .net 语言(例如 c#、vb)

  • 如果是 MVC/Razor,则没有依赖。您可以通过 POST、GET 等(只是说)在服务器端完全运行所有内容。如果有人想要,你可以在Web Forms 中做同样的事情......不是你应该这样做:)

  • 相反,您也可以只做一个 100% 的 Javascript 应用程序(100% 客户端) - 当然要了解这些(限制、安全考虑等)

    李>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2012-07-14
    • 2016-04-15
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多