愛(ai)上(shang)MVC~Razor引擎時,在遍歷(li)中(zhong)巧用Output.Write方法
在Razor引擎(qing)中,對于在表格中進行遍歷時,一般會這樣寫(xie)
<table border="1"> @{ for (var i = 0; i < 10; i++) { <tr> <td> @i </td> </tr> } } </table>
這是沒有問題的,但如果你的元(yuan)素(su)i,希望在一行顯示2列,你應(ying)該如何去做,下面的代碼是不被(bei)razor接受的
<table border="1"> @{ for (var i = 0; i < 10; i++) { if (i % 2 == 0) { <tr> } <td> @i </td> if(i%2!=0){ </tr> } } } </table>
這(zhe)(zhe)種寫(xie)法(fa)(fa)在運行(xing)時(shi)會拋出異(yi)常的(de),因為(wei)razor特有(you)的(de)對標(biao)記(ji)的(de)智(zhi)能(neng)識別,省去(qu)了<%%>這(zhe)(zhe)種結尾標(biao)記(ji),所(suo)以上(shang)面的(de)寫(xie)法(fa)(fa)對于razor是不能(neng)接受的(de),我
們需要把代(dai)(dai)碼(ma)修改(gai)一下(xia),把<tr>標記寫(xie)在程序里(li),代(dai)(dai)碼(ma)如(ru)下(xia):
<table border="1"> @{ for (var i = 0; i < 10; i++) { if (i % 2 == 0) { Output.Write("<tr>"); } <td> @i </td> if (i % 2 != 0) { Output.Write("</tr>"); } } } </table>
注意,我們在輸出時沒有用Write,也沒有用Response.Write,因為這兩(liang)種輸出都不能在原(yuan)位置進行輸出,而如(ru)果(guo)希望在原(yuan)位置輸出指定字符,需(xu)要
使用(yong)Output對(dui)象的Write方法,結果如下:
感謝閱讀!