我整个上午一直在盯着这个,我似乎无法找到办法。
我有一个网络应用程序,必须在其中一个div上显示工具提示。工具提示的内容来自某些数据库查询
< div style =“height:10px; clear:both;” title =“<%= dbCount%>此组中版本<%= devVersion%>的设备”>
这很好用。
如果我尝试用表达式替换<%=dbCount %>
:
< div style="height: 10px; clear: both;" title="<%=dbCount > 0 ? ""+dbCount : "No " %> device(s) with version <%=devVersion %> in this group">
然后在PageLoad上我得到一个例外CS1518:期望的类,委托,枚举。
我如何构造表达式并不重要,如果我放括号或不使用括号,如果我使用String.Format或三元表达式 - 除了仅使用变量名之外,任何类型的表达式都会导致错误。
我尝试将&lt;%=替换为&lt;%#并尝试&lt;%Response.Write(dbCount&gt; 0?“some”:“none”)%&gt;我得到了同样的错误。这是我正在编辑的aspx中的唯一一行,因此错误是由它引起的,而不是页面上的其他地方。
我可以使用&lt;%if(...){构造但是设计师在查找结束div时遇到了麻烦,我不想用过多的垃圾污染源,我宁愿保持原始版本。
你知道为什么编译器错误出现了吗?如何防止它并使用输出表达式&lt;%= devCount&gt; 0?“some”:“none”%&gt;?
答案 0 :(得分:0)
所有这些变种在这里运行正常,在C#样本中,我包括你提到的运行良好的情况:
在VB.NET中
标记:
<body>
<form id="form1" runat="server">
<div id="<%If dbCount = 1 Then%><%="22"%><%Else%><%="55"%><% End If%>">
<%=dbCount.ToString()%>
</div>
</form>
</body>
代码隐藏:
Partial Class varIn
Inherits System.Web.UI.Page
Public dbCount As Short = 0
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
dbCount = 1
End If
End Sub
End Class
在C#中
标记:
<div id="<%if (dbCount == 1) { %><%="22"%><%;}else{%><%="55"%><%;}%>">
<%=dbCount.ToString()%>
</div>
或者:
<div id="<%=dbCount > 0 ? ""+dbCount : "No " %>">
<%=dbCount.ToString()%>
</div>
代码隐藏:
public partial class _Default : System.Web.UI.Page
{
public short dbCount;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dbCount = 1;
}
}
}
答案 1 :(得分:0)
我已经创建了一个测试网络应用,你的代码(&lt;%= dbCount&gt; 0?“”+ dbCount:“没有”%&gt;“工作正常(我假设”&lt; div“是一个错误的)。我假设dbCount是一个int而devVersion是一个字符串。还有其他事情发生吗? dbCount是一个调用方法的公共属性吗?它是公共变量吗?
您应用中的dbCount是什么?
答案 2 :(得分:0)
不要写那样的代码。 Aspx文件仅支持向后兼容性。
如果你真的必须这样做,那就只写一下公共属性。
ASP.NET网页主要支持嵌入式代码块 保持与旧ASP技术的向后兼容性。一般来说, 使用嵌入式代码块来实现复杂的编程逻辑并不是最好的 实践,因为当代码在页面上与标记混合时,它 可能很难调试和维护。另外,因为代码 只在页面的渲染阶段执行,你有 与代码隐藏或脚本块相比,灵活性大大降低 将代码范围限定到页面处理的适当阶段的代码。
也就是说,该链接确实向您展示了如何正确使用嵌入代码。
如果你真的必须这样做,请使用Response.Write。
< div style="height: 10px; clear: both;" title="<%
{
string countMessage = dbCount > 0 ? ""+dbCount : "No ";
Response.Write(countMessage );
}
%> device(s) with version <%=devVersion %> in this group">