我需要在ASP.NET中使用标记,以便从类后面的代码中调用C#方法,但无论是启用还是禁用JavaScript,它似乎都在调用它。标签内的其他文本按预期工作。
以下是我正在使用的代码,我做错了什么?
由于
<noscript>
other text here
<% DisableTextBox("textBoxId"); %>
</noscript>
解决方案 TextBox在服务器端被禁用,并使用以下JavaScript / jQuery启用了客户端:
$("#txtTotalQuantScore").prop("disabled", false);
答案 0 :(得分:6)
ASP.NET视图引擎对您所包含的noscript
标记一无所知。
服务器将执行所有服务器端代码,并将结果写入HTML页面。 noscript
标记不能用作C#if语句。
如果您想在Javascript不可用时禁用某些内容,则可以在客户端执行此操作。
一种方法是将有问题的元素设置为隐藏在CSS中,然后使用Javascript取消隐藏它。
答案 1 :(得分:5)
正如@Jamie Dixon所描述的那样,你想做的事情是不可能的。
查看您的方法名称,如果浏览器不支持javascript,则表示您正在尝试禁用文本框。
因此我建议始终在服务器端禁用此文本框,并在客户端使用javascript启用它。
这样,只有支持javascript的浏览器才能启用文本框。
答案 2 :(得分:1)
我想补充一点,您可以检测服务器端浏览器支持脚本,但是没有简单的方法来判断用户是否已启用 脚本。
您可以采用一种技巧,例如通过脚本在隐藏字段中设置值(例如,0表示没有脚本,1表示启用),但这并不总是可靠的。