繁体   English   中英

我们可以使用 C# 和 Z9E0DA8438E1E38A1Cweb 方法在 static 中调用 Page_Load 事件吗?

[英]Can we call Page_Load event in static web method using C# and ASP.NET

我已经用谷歌搜索了这个问题,但没有得到相关答案,所以我想知道,当 web 方法触发时,是否可以调用page_load事件?

[WebMethod]
public static string AutoFillData(string entredsmbl)
{
    // List<string> data = new List<string>();

    try
    {
        // Once this event hit and I want to call the page_load event
        // Page_Load(null, null);

        entredsymbol = entredsmbl;

        return entredsymbol;
    }
    catch (Exception)
    {
        throw;
    }
}

为什么我要调用page_load事件?

因为,不是从 static WebMethod获取返回的数据,而是在 Ajax 中编写一些逻辑并将该数据加载到我想要的位置(为了避免这个过程,我想调用page_load事件)。

我不认为这是一个好问题,但我想知道这是否可能。

给我你最好的建议

好吧,假设您编造了某种方式来调用该代码?

你不能!!1

原因是如果没有回发,那么控件的所有值都不可用。

web 方法是 static,您甚至不必将 web 方法放在同一页面上。,您所做的只是调用服务器端代码块但是,如果没有回发,那么所有控件及其值仍然是桌面浏览器上的设置 - 而不是服务器端,所以。 即使您可以在没有回发的情况下调用页面加载,它也无法更改页面上任何内容的值——因为页面仍在用户桌面上设置——而不是在服务器上。

请记住,在您进行回发之前,后面的代码及其值是不存在的。

You can (even should) think of your web page code behind like calling a function or sub, and once you exit that function, then all values and varialbes have go out of scope.

web 服务器不会在 memory 的页面 class 后面保留代码的活动副本。 web 服务器正在等待您或任何其他用户回发。

当您回发时,然后仅是您在 memory 中创建的页面 class 的实例。 然后运行您的代码,呈现页面,发送回客户端,然后处理页面 - 从 memory 中删除。 Web 服务器现在正在等待下一次回发。

所以,你有这个:

在此处输入图像描述

请注意您的页面 class - 后面的代码不在服务器上的 memory 中。

你没有这个:

注意这里非常小心 - web 页面在客户端计算机上 - 它在 web 服务器端根本不存在。

在此处输入图像描述

你甚至没有这个:

在此处输入图像描述

因此,当您单击按钮或进行回发时,您会得到以下信息:

在此处输入图像描述

我们的 web 页面被发送到服务器。 你现在有这个:

在此处输入图像描述

所以现在您的页面位于服务器上。

现在创建了页面 class 的实例,您的代码开始运行。

您后面的代码可以修改控件(甚至控件是否可见),但页面不与用户交互 - 只有代码可以修改 web 页面。 因此,web 页面可能会发生一个更改或许多更改,但是当您更新文本框等内容时,用户还没有看到这些更改。 所以,你不能说运行一个循环到 flash 一个文本框打开和关闭 - 因为更改发生在服务器上 - 客户端浏览器不再有 web 页面!

然后将其发送回客户端,服务器端 class 实例和代码被丢弃 - 不存在,.! 您的服务器端页面 class 已被处理 - 从内存中删除,并且后面的 web 页面代码不再存在。

因此,页面返回客户端,重新显示,加载 JavaScript,然后 JavaScript 开始运行。

在此处输入图像描述

好的,那么,考虑到上述情况?

然后你的问题:

在我想要的地方加载数据

您无法加载或更改 web 页面或对其执行任何操作,因为整个 web 页面仍位于客户端浏览器端 - 它不存在于服务器上。 您无法触摸控件或更改 web 页面 - 它在服务器端不存在。 web 页面位于客户端。

因此,如上所示,它表明您不了解 web 页面的工作原理。 您不能在 web 页面上调用任何非 static 方法,因为您在服务器上没有 web 页面,是吗?

如果您只需要更新一些控件? 然后放入您想要更改的那些控件 + 更新面板内的按钮。 然后将仅回发更新面板内部的内容,运行代码隐藏,然后更新面板返回到客户端,并且只有 web 页面的那部分会更新。

请记住,在使用更新面板时,页面加载事件会运行,但让页面加载做很多事情没有意义,因为同样只能更改更新面板中的控件。 但是,页面加载每次都会触发。

考虑到上述情况,您就可以知道您的问题如何以及为什么没有意义。 简单的答案是控件和值仍然位于客户端计算机浏览器上 - 如果没有将页面发布回服务器,则服务器无法更新您的浏览器。

服务器无法再访问您计算机上的 web 页面,然后它试图访问您计算机上的一些 web 页面进行银行业务!!!!

如果 web 服务器可以访问您拥有的任何浏览器页面 - 并控制该 web 页面,那么 web 使用风险太高!!!

因此,服务器永远不会修改您桌面上的任何内容,.,您发送您想要更改的内容。 然后后面的代码现在可以在服务器上修改该页面。 当后面的代码完成后,页面将被发送回客户端进行显示。

我认为更新面板可能很适合您的情况 - 但您需要掌握 web 的工作原理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM