[英]Does asp.net auto generate Javascript?
如果我创建一个新的VS项目并将以下示例代码复制到新页面default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="WebApplication1._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="top-menu" class="float-right">
<ul class="main">
<li><a id="A1" href="#" runat="server" class="current"><span>Home</span></a> </li>
<li><a href="#"><span>Members</span></a>
<ul class="sub curved">
<li><a href="#">MemberPage1</a></li>
<li><a href="#">MemberPage2</a></li>
<li><a href="#">MemberPage3</a></li>
</ul>
</li>
<li><a href="#"><span>Blog</span></a> </li>
<li><a href="#"><span>Contact</span></a> </li>
<li><a href="#"><span>Admin</span></a> </li>
<li><a href="#" runat="server" onserverclick ="Scan_Click"><span>Scan</span></a></li>
</ul>
</div>
</div>
</form>
</body>
</html>
当我运行时,当我将鼠标悬停在Scan- Javascript:_doPostBack('ctl02','')
时,浏览器中会显示以下内容
作为ASP.NET的新手,这让我感到惊讶,因为我不知道自己在使用javascript,所以我希望这不是一个愚蠢的问题……
如果用户在浏览器中禁用了javascript(例如Tor最近建议),这是否意味着服务器端事件Scan_Click将不会运行?
如果是这样,是否有替代方法可以在asp.net站点上运行服务器端脚本,并在浏览器中禁用javascript?
ASP.NET将JavaScript用于回发功能,因此,如果不启用JavaScript,它将无法运行。
如果要在没有JavaScript的情况下运行应用程序,则必须移至ASP.NET MVC并使用常规的POST操作。
但是请注意,采用这种其他方法,您将不会拥有所有精美的控件(如日历,菜单甚至按钮),所有内容都是纯HTML。
如果用户在浏览器中禁用了javascript(例如Tor最近建议),这是否意味着服务器端事件Scan_Click将不会运行?
是的, runat="server"
属性允许ASP.NET将您的onserverclick
事件转换为可以通过JS调用的某些客户端代码-如果禁用了JS,则无法触发此代码。
如果是这样,是否有替代方法可以在asp.net站点上运行服务器端脚本,并在浏览器中禁用javascript?
您可以手动编写HTML输出,从而可以控制如何调用回发,从而可以确保您不依赖JS。 但是,您需要权衡没有启用JS的情况下网站正常运行的可能性,更不用说回发了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.