我必须将一些代码从经典ASP转换为ASP.NET
1)我怎样才能最好地处理如下语法,因为代码在标记内部,似乎失败了,也许因为条件被分成几个标记。
2)哪种工具或指南对这类代码有好处?
3)经典ADO。
<li><a<% if "" = myFolder then %> class="selected"<% end if %> href="http://<%= SERVER_NAME %>/"><%= getLocale("Home") %></a></li>
<% SQL = "SP_TOPNAV '" & lang & "'"
Set maNav = conn.execute(SQL)
do while not maNav.EOF %>
<li><a<% if maNav(0) = myFolder then %> class="selected"<% end if %> href="http://<%= SERVER_NAME %>/<%= maNav(0) %>"><%= maNav(1) %></a></li>
<% maNav.MoveNext
loop
Set maNav = Nothing %>
</ul>
答案 0 :(得分:2)
如果您使用.net 2.0查看可以绑定到数据源的asp:repeater,如果您使用.net 3.5查看asp:listview。这些控件使您能够迭代数据并生成标记,这基本上就是您的操作。
答案 1 :(得分:2)
ASP.net处理几个&lt; %%&gt;之间的代码分割标签就好了。问题出在其他地方。请编辑您的问题以包含错误消息。
答案 2 :(得分:1)
您始终可以使用ASP.NET的数据控件(例如Repeater, GridView, DataList
)来显示项目集合。您可以通过修改 ItemTemplate
来自定义其外观。您也可以在ItemTemplate
内包含渲染条件。
例如:
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%# Container.DataItem %> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
取自:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemtemplate.aspx
您始终可以在<%# ... %>
文本中插入条件逻辑。或者,如果逻辑很复杂,您可以在代码隐藏文件中对它们进行编码,并从此处调用它们。
搜索“如果在ItemTemplate内部的ASP.NET”或“ItemTemplate中的ASP.NET条件”以获取更多信息。