C# asp.net中的条件语句存在问题
我正在尝试在aspx页面中执行以下操作:C# asp.net中的条件语句存在问题,c#,asp.net,C#,Asp.net,我正在尝试在aspx页面中执行以下操作: <%@ Page Language="C#" EnableSessionSTate="true" ValidateRequest="False" Inherits="MyProject.CodeBehind.MYWF.SiteWF" MasterPageFile="~/_layouts/application.master" %> <asp:Content ID="Content5" ContentPlaceHolderID="Plac
<%@ Page Language="C#" EnableSessionSTate="true" ValidateRequest="False" Inherits="MyProject.CodeBehind.MYWF.SiteWF" MasterPageFile="~/_layouts/application.master" %>
<asp:Content ID="Content5" ContentPlaceHolderID="PlaceHolderPageDescription" runat="server">
<% if (!isOld) %>
<% { %>
<p>display this</p>
<% } %>
</asp:Content>
展示这个
isOld是命名空间中提到的cs文件中的一个公共bool变量
但不幸的是,它给了我一个未知的错误
我可以在JSP中做类似的事情,但在谷歌搜索了一段时间后,我不太确定在ASP.NET中是否可以实现上述目标?(是缺少标记声明,还是必须自己编写整个标记库?)
谢谢
编辑:我刚刚收到一个未知错误。我感觉上面的代码要么语法错误,要么完全偏离了正确的轨道。我尝试了以下代码,没有出现错误,但bool变量始终为false:
<% #if !isOld %>
<p> display this</p>
<% #endif %>
展示这个
在您的代码前端:
<%@ Page Language="C#" EnableSessionSTate="true" ValidateRequest="False" Inherits="MyProject.CodeBehind.MYWF.SiteWF" MasterPageFile="~/_layouts/application.master" %>
<asp:Content ID="Content5" ContentPlaceHolderID="PlaceHolderPageDescription" runat="server">
<asp:PlaceHolder runat="server" id="PlaceHolderIsOld">
<p>display this</p>
</asp:PlaceHolder>
</asp:Content>
在代码前端:
<%@ Page Language="C#" EnableSessionSTate="true" ValidateRequest="False" Inherits="MyProject.CodeBehind.MYWF.SiteWF" MasterPageFile="~/_layouts/application.master" %>
<asp:Content ID="Content5" ContentPlaceHolderID="PlaceHolderPageDescription" runat="server">
<asp:PlaceHolder runat="server" id="PlaceHolderIsOld">
<p>display this</p>
</asp:PlaceHolder>
</asp:Content>
那是什么错误呢?类似于:“无法修改控件集合”?如果是这样,那你就是运气不好。您需要停止正在修改控件的代码(通过在codebehind中的某个位置添加或删除一个控件),或使“display this”出现在
占位符中,并适当地设置它的Visible
属性(这就是我要做的)。Re:您的编辑缺少一个括号:
应该是
(注意括号)。(编辑:事实上,也许不是,但我从未见过有人在完全不同的
区域中编写括号,这似乎很奇怪。这是什么错误?类似于:“无法修改控件集合”?如果是这样,那么你只是运气不好。你需要停止修改控件的代码(通过在codebehind中的某个位置添加或删除一个)或使“display this”出现在占位符中,并适当地设置其可见的属性(这就是我要做的)。Re:编辑时,缺少一个括号:
应该是
(注意括号)。(编辑:事实上,也许不是,但我从未见过有人在完全不同的
区域中编写括号,这似乎很奇怪。@AndreasKnudsen:代码背后的Placeholder Isold在哪里?我的代码背后继承System.Web.UI.Page,我没有页面加载方法。我似乎无论如何都无法访问Placeholder Isold。根据定义g代码前面的占位符,它将自动显示为可在代码后面使用。(Visual studio在*.designer.cs文件中生成代码)Asp.Net硬连接到使用反射在页面和用户控件中查找某些方法。如果您定义的方法具有上面代码中显示的签名,则Asp.Net将在“加载”时调用该方法页面生命周期的一部分。虽然有点神秘,特别是对于使用嵌套控件和母版页的高级站点,但非常值得学习:我最终做的事情与上面的代码类似:在服务器端设置所有内容。当满足某些条件时,我使项目/内容区域可见,等等,而不是使用asp语法。效果也不错。谢谢你的想法和图表。@AndreasKnudsen:占位符Isold在代码隐藏中的位置是什么?我的代码隐藏继承了System.Web.UI.Page,并且我没有页面加载方法。我似乎无论如何都无法访问占位符Isold。通过在代码前端中定义占位符,它将自动显示为可在您的codebehind中使用。(Visual studio在*.designer.cs文件中生成代码)Asp.Net硬连接到使用反射在页面和用户控件中查找某些方法。如果您使用上面代码中显示的签名定义方法,则Asp.Net将在“加载”时调用它页面生命周期的一部分。虽然有点神秘,特别是对于使用嵌套控件和母版页的高级站点,但非常值得学习:我最终做的事情与上面的代码类似:在服务器端设置所有内容。当满足某些条件时,我使项目/内容区域可见,等等,而不是使用asp语法也很好。谢谢你的想法和图表。