我是一個業餘愛好程序員,直到最近才使用ASP經典。我正在使用Razor語法並嘗試從ASP Classic複製一些代碼。自動生成一個數據庫查詢的HTML表格
從我一直在使用W3Schools的ASP的經典代碼如下
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers"
rs.Open sql, conn
%>
<table border="1" width="100%">
<tr>
<%for each x in rs.Fields
response.write("<th>" & x.name & "</th>")
next%>
</tr>
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop
rs.close
conn.close
%>
</table>
我知道大多數人會說使用的WebGrid。是的,我已經做到了這一點,它真的很慢,所以我試圖通過將它與此進行比較來排除故障。 我的剃刀代碼如下
var SelectCommand1 = "DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); " +
"SET @cols = STUFF((SELECT ',' + QUOTENAME(tblTests.Name) " +
"FROM tblTestsInEvents c INNER JOIN tblTests ON c.Test_ID = tblTests.Test_ID " +
"WHERE c.Event_ID = @0 order by c.TestsInEvents_ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'') " +
"set @query = 'SELECT Car_Number, First_Name, Last_Name, ' + @cols + ' " +
"from (select First_Name, Last_Name, tblTestsLog.Driver_ID, Name, CorrectedTime, tblDriversInEvents.Car_Number "+
"FROM tblTests INNER JOIN "+
"tblTestsLog ON tblTests.Test_ID = tblTestsLog.Test_ID INNER JOIN "+
"UserProfile ON tblTestsLog.Driver_ID = UserProfile.UserId INNER JOIN "+
"tblDriversInEvents ON UserProfile.UserId = tblDriversInEvents.Driver_ID AND tblTestsLog.Event_ID = tblDriversInEvents.Event_ID) "+
"x pivot (sum(CorrectedTime) for Name in (' + @cols + ')) p ' "+
"execute(@query)";
var SelectedData1 = db.Query(SelectCommand1, EventID);
內嵌代碼是這樣的:
@{//grid.GetHtml()
<text><table></text>
foreach (var x in SelectedData1)
{
@:<tr>
foreach (var y in x.Fields)
{
<text><td>@y.value</td></text>
}
@:</tr>
}
}
</table>
的x.Fields此刻正在失敗,我無法找到一個等效。 任何建議和提示將是偉大的。 謝謝
它的失敗意味着什麼?錯誤是什麼? – gdp
感謝您的回覆。錯誤是指無效的列名稱「Fields」。 .Fields意味着ASP Classic中的某些內容,但不包含在剃刀中。另一種說出我的問題的方法是如何遍歷查詢結果中的所有列 – Trevor78