我正在使用引导程序来折叠和展开策略的详细信息视图。我有下面的代码,我的服务器标记未解析为客户端 ID,并在 html 代码中保持为 <%= details.ClientID %>。我在不同的页面上有完全相同的代码,并且工作正常。我错过了什么吗?详细信息 ID 正确解析为 asp 服务器 ID,只是我的数据目标没有改变。
<asp:Repeater ...>
<tr class="text-right" data-target="#<%= details.ClientID %>" data-toggle="collapse">
<td>Policies</td>
</tr>
<tr runat="server" ID="details" class="collapse">
<asp:Repeater ....>
</asp:Repeater>
</tr>
</asp:Repeater>
我最终只是通过 Javascript 完成了它:
$('#<%=detailsParent.ClientID%>').attr('data-target', '#<%=details.ClientID%>');
我认为除了这种情况之外,这篇文章值得更多的赞扬。 服务器标签不渲染的这个问题确实是一个问题。 对我来说,这是在数据重复器或其他数据绑定控件内进行验证。
例如。 如果单个页面上有多个线程(回复),则使用相同的验证将不起作用。 然后您将面临如何以编程方式设置
ValdationGroup
。 对于开发人员来说,您可以通过多种方式解决这个问题。 我也许可以制作一个数组,或者这个或那个……但是为什么要使用额外的代码呢? 我想我只需使用 therads ID 作为组,这样就不会出现重复的问题。
使用服务器标签设置这些值时,我遇到了问题。 主要来自提交按钮。 当您设置验证时,无论是否动态,如果它们与其他控件不匹配,它甚至不会显示:
<input type="submit" name="ctl00$pgcontent$UserProfile$rptPriUpdate$ctl01$btnSubmit" value="Post" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$pgcontent$UserProfile$rptPriUpdate$ctl01$btnSubmit", "", true, "VALIDATION_HERE", "", false, false))" id="ctl00_pgcontent_UserProfile_rptPriUpdate_ctl01_btnSubmit" class="button white cmnt" />
哈哈,抱歉,堆栈的字符编码甚至无法跟上 asp 的 bullS*HH 但无论如何......你有点明白我想说的......
所以最大的问题是,这篇文章确实对我有帮助,那就是让用于验证的服务器标签使用单引号而不是双引号。
从此:
ValidationGroup="<%# Eval("ID") %>"
对此:
ValidationGroup='<%# Eval("ID") %>'
另一个确实很难弄清楚的问题是,使用双引号进行验证在其他控件上效果很好,但在提交按钮上却不起作用。 这就是有效的。我正在使用 ASP.NET 4.0 我希望这可以帮助任何陷入困境的人。