我有相当广泛的经典 ASP 背景(使用服务器端 javascript),我的公司终于(最终)推动在 ASP.Net 中重新编码所有内容(使用 C#)。我很好地掌握了经典 ASP 中的良好编程实践,并且我通常会尝试确保以“正确”的方式编写代码。我一直在阅读 ASP.Net 教程,感觉自己对基础知识有了相当的了解。在将客户端 javascript 分离为外部 js 文件、将样式保持在外部 css 文件中的标记之外等方面,我有很好的纪律。因此,在阅读这些新手教程时,我了解代码隐藏页面的概念。将 c# 代码与最终成为页面标记的内容分开对我来说是有意义的。制作<asp:button>
但是,我很难思考如何做一些简单的事情,就像我在 Classic ASP 中所做的那样:
<%
if (condition) {
%>
<input type="button" value="click me" onclick="dosomething()" />
<%
}
else {
%>
<span>You don't have permission to see the button</span>
<%
}
%>
我很难弄清楚我应该如何将您在上面看到的条件内容放入代码隐藏页面中。如果我在这两种情况下都显示一个按钮,我会<asp:button>
在代码隐藏页面中创建一个对象并相应地设置它的样式 - 但在上面的示例中,我只在条件为真时显示按钮,如果是跨度块错误的。
我知道您不必将所有 c# 代码都放在代码隐藏页面中。我可以<% %>
像在 Classic ASP 中那样使用标签。但是,如果我这样做,那么在我看来,它会降低代码隐藏页面的相关性。例如,我知道您可以使用外部 css 样式表来样式化您的页面,同时也可以在单个标签上使用内联样式。然而,我认为这是不好的做法。如果您不知道是在标记中还是在 css 文件中查找影响该元素的相关样式,则以后必须调整该元素上的样式会很困难。
在我看来,您的标记和代码隐藏页面也是如此。将两者混合在一起是否只是一种必要的邪恶,还是有更好的方法来做我上面展示的事情?