关于 Visual Studio 最佳实践的问题

时间:2021-03-29 23:44:32

标签: asp.net vb.net visual-studio

我仍在尝试使用 ASP.NET 和 VB.NET 进行响应式设计。

我从 jscript 访问客户端浏览器并将其添加到 aspx 页面上的页面标签。

示例代码:

<asp:Label runat="server" ID ="myhidden" Text="not set" Visible="true"/>
<script>
 var w = window.innerWidth
 var x = document.getElementById("myhidden");
 x.innerHTML = "Browser window width: " + w;
 </script>

页面正确加载并显示值。

我试图解决的问题是“何时”我可以从后面的 VB.NET 代码访问标签文本。似乎该值仅在页面完全呈现后才在代码中可用。

我有 Page.load、page.unload 等。即使在后面的代码中加载标签值,我也找不到“正确的”。

提前致谢。

赫尔曼

2 个答案:

答案 0 :(得分:1)

好吧,您正在运行的浏览器端代码,因此页面必须在脚本代码运行之前发送到浏览器。

所以,从理论上讲,这种设计意味着只有在用户想要点击按钮,或发生某些网页操作后,您才能获取/抓取/使用在代码中设置的值。

您还没有将页面发送到浏览器,因此您没有事件,也没有可以查找和获取页面宽度的地方 - 浏览器甚至还没有看到页面。

这是什么意思?您必须从登录页面或从第一页加载中获取此宽度值。但是那个页面肯定有负载,必须运行,并且必须设置该值。只有当页面被发送回服务器时,你的代码才能运行。

我想你可以显示一个页面,运行一些脚本代码,然后说使用 js 单击一个按钮来运行一些代码并获取宽度值。

另一方面?我认为术语“响应式”页面在这里被误用了。实际上响应式页面的整个想法?它们会自动为您重新调整大小,因此在代码中您无论如何都不应该担心或关心屏幕大小和宽度!

那么,假设您创建了一个默认网站 - asp.net/webforms、vb.net? 你有这个:

enter image description here

现在是响应式网站? (默认情况下,哪个 asp.net 项目是? - 它使用引导程序)。

所以,让我们将浏览器的大小调整为一半。你得到这个:

enter image description here

注意文本段落是如何变化的。

注意文本块如何仍然居中。

所以网站是自动响应的。让我们走得更小!!!

你明白了:

enter image description here

现在这些块都在彼此下方。

注意菜单栏现在是那些熟悉的下拉菜单之一(这通常称为汉堡包)。

所以以上就是他们所说的“响应式”网站。甚至开箱即用的 vb.net/asp.net Web 表单应用程序也安装了引导程序,因此您的页面被视为“响应式”。

因此,响应式网站已经就位。

我为此编写了零代码。

并且不需要,或关心或作为一般规则需要获得一些页面宽度 - 它根本不是作为开发人员的行动或要求而真正完成的。

如果有人建议您需要一些 javaScript 来获取页面宽度以编写响应式网站?嗯,这种建议需要某种体检!

现在,虽然以上解决了“响应式”网站的问题? (顺便说一下,这是 asp.net 中此类网站的默认设置)。

好吧,在某些情况下,您确实希望获得该页面宽度。

但是,在您的示例中,我们无法在页面上找到一些“事件”来获取该标签,因为该网页甚至还没有进入浏览器!!! (提示:因此,您无法找到页面事件来执行您要查找的操作!!!)。

如果出于某种原因您确实需要该值(页面宽度)?然后你必须向用户展示一个页面,然后响应点击按钮或任何导致回发的东西,然后你的代码就会运行!

所以,我想在您的第一个登录页面上,您可以执行此操作(获取/抓取/保存页面宽度)。但这只能发生在用户看到页面后,他们点击了某个按钮或采取了将页面发布回来的操作,然后你背后的代码才能运行。

必须知道 Web 开发中的概念吗?您必须掌握所谓的“往返”或我们所说的页面生命周期。

在第一页加载时 - 客户端浏览器什么都没有。因此,您拥有的脚本无法运行。

在我们将页面发送到客户端后,我们有:

enter image description here

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

你没有这个:

enter image description here

而你甚至没有这个:

enter image description here

当用户点击一个按钮时,你有这个:

enter image description here

页面现在传送到服务器,你有这个:

enter image description here

现在你背后的代码开始运行。您背后的代码可以修改控件,但页面不与用户交互 - 只有背后的代码可以修改网页。

所以,你的代码开始运行了;

何时完成并且仅在该代码运行之后?然后页面返回浏览器:

然后浏览器再次显示,您拥有的脚本代码将再次开始运行!!

那么,要让您的页面正常工作? 您必须在页面上放置一个按钮。让页面呈现,然后当用户单击按钮时?然后你的按钮代码后面的代码可以获取/抓取/查看 page.width。

假设后面的代码看起来像这样(假设您在页面上放置了一个按钮)。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim MyPageWidth As Integer

    MyPageWidth = myhidden.Text

    ' do whatever more

End Sub

答案 1 :(得分:0)

感谢 Albert 的解释。我认为我们设计的“自适应”和“响应式”网页设计之间需要有一些清晰的认识。在自适应方法中,CSS 更改页面布局以适应设备。我接受这一点。在响应式设计中,我会依赖 CSS,但也希望对页面布局有更多的控制。