【问题标题】:Inline C# in <noscript> tags<noscript> 标签中的内联 C#
【发布时间】:2026-02-04 10:00:01
【问题描述】:

我需要在 ASP.NET 中使用标签才能从类后面的代码中调用 C# 方法,但无论 JavaScript 是启用还是禁用,它似乎都在调用它。标签内的其他文本按预期工作。

下面是我使用的代码,是不是我做错了什么?

谢谢

<noscript>
  other text here
  <% DisableTextBox("textBoxId"); %>
</noscript>

解决方案 TextBox 在服务器端被禁用,并使用以下 JavaScript/jQuery 启用客户端:

$("#txtTotalQuantScore").prop("disabled", false);

【问题讨论】:

  • 服务器端在发送给客户端之前不知道客户端是否启用了javascript。..
  • 如果客户端没有启用脚本,大部分 .NET 框架客户端功能将无法工作...

标签: c# javascript html asp.net noscript


【解决方案1】:

ASP.NET 视图引擎对您包含的noscript 标记一无所知。

所有服务器端代码将由服务器执行并将结果写入 HTML 页面。 noscript 标记不能用作 C# if 语句。

如果你想在 Javascript 不可用时禁用某些东西,你可以在客户端这样做。

一种方法是将相关元素设置为隐藏在 CSS 中,然后使用 Javascript 取消隐藏。

【讨论】:

    【解决方案2】:

    正如@Jamie Dixon 所描述的,您尝试做的事情是不可能的。

    查看您的方法名称,如果浏览器不支持 javascript,您似乎正在尝试禁用文本框。

    因此,我建议始终在服务器端禁用此文本框,并在客户端使用 javascript 启用它。

    这样,只有支持 javascript 的浏览器才会启用文本框。

    【讨论】:

    • 我最后启用了JavaScript,将代码放在第一篇
    【解决方案3】:

    我要补充一点,您可以检测到浏览器支持脚本的服务器端,但是没有简单的方法来判断用户是否启用了脚本。 p>

    您可以使用一些技巧,例如通过脚本在隐藏字段中设置值(例如,0 表示没有脚本,1 表示启用),但这并不总是可靠的。

    【讨论】: