如果我在 DetailsView 中定义以下模板,则在单击更新或插入按钮后,该页面将回发到服务器:
<EditItemTemplate>
<asp:TextBox ID="txtDate" runat="server" Text='<%# Bind("Date") %>'></asp:TextBox>
<asp:CompareValidator ID="valDateType" runat="server" ControlToValidate="txtDate" Type="Date" Operator="DataTypeCheck" Display="Dynamic" >*</asp:CompareValidator>
</EditItemTemplate>
如果我从上面的代码中删除了CompareValidator控件,只需删除它,那么页面仍然会被回发。但是如果相反,我将 CompareValidator 控件移到<!-- -->
标签中,然后将其删除出于某种原因,单击更新或插入按钮不会导致回发...而是没有任何反应:
<EditItemTemplate>
<asp:TextBox ID="txtDate" runat="server" Text='<%# Bind("Date") %>'></asp:TextBox>
<!-- <asp:CompareValidator ID="valDateType" runat="server" ControlToValidate="txtDate" Type="Date" Operator="DataTypeCheck" Display="Dynamic" >*</asp:CompareValidator> -->
</EditItemTemplate>
</EditItemTemplate>
知道为什么页面没有回发?
感谢名单
答案 0 :(得分:2)
尝试使用服务器端评论:
<%--<asp:CompareValidator ID="valDateType" runat="server" ControlToValidate="txtDate" Type="Date" Operator="DataTypeCheck" Display="Dynamic" >*</asp:CompareValidator>--%>
您还可以使用Enabled="False"
属性。
答案 1 :(得分:1)
上周我被(别人的!)JSP中的类似东西咬了一口。 HTML注释不会阻止标记被解析;如果它生成一个HTML注释,你最终会得到嵌套的HTML注释和各种奇怪的事情。
在ASP / JSP中唯一“安全”使用HTML样式的注释分隔符是在它们之间没有生成内容的地方:
<!-- This is safe -->
我们确切地知道在ASP引擎解析它之后将会是什么 - 它看起来会一样。当你有ASP标签时,问题可能咬你:
<!-- This might not be safe because I have no idea
what <asp:joesCustomTag/> expands to -->
如果该标记生成HTML评论,您的HTML评论中会有HTML评论!让我们看看解析自定义标记并将HTML发送到浏览器时会发生什么:
<!-- This might not be safe because I have no idea
what
<!-- Joe's custom tag -->
<p>Joe is 1337</p>
expands to -->
你可以在那里看到问题 - SO自己的解析器被嵌套的注释混淆了。 最安全的做法是假设每个代码都会生成HTML注释,并且将其放入HTML注释中会让您感到厌烦。即使它是您的标记,您也可以稍后向其添加HTML注释。
正如Paperjam所说,答案是使用正确的服务器端评论来评论事情 - 当然,你真的不应该留下评论出去的东西等着咬你。如果您确实希望评论显示在HTML源代码中,请仅使用HTML样式的评论。