正在嘗試自己練習MVC的View,目前遇到以下困難,假設有兩筆資料,其中第一筆的Description存放含有換行與空白的字串,但因為存放字串的問題(如下圖),所以實際在印出時卻無法保持原本的排版,請問要如何調整呢?
已有嘗試使用<pre>
搭配/n
、</ </br>
,但嘗試未果。
@{
var rows = new[]{
new{
Title="Title1",
Description="123 Enter"+
"456 Enter"+
" 789 "
},
new
{
Title="Title2",
Description = "N/A",
}
};
}
<br />
<div>
<table>
<thead>
<tr>
<td colspan='2' style='font-weight:bold;text-align:left;'>
INFORMATION:
</td>
</tr>
</thead>
<tbody>
@for (var i = 0; i < rows.Length; i++)
{
var row = rows[i];
<tr>
<td colspan='2'>
<b>@(row.Title)<br /></b>
<pre>@(row.Description)</pre>
</td>
</tr>
}
</tbody>
<tfoot>
<tr height='0'>
<td width='50%' style='border:none'></td>
<td width='50%' style='border:none'></td>
</tr>
</tfoot>
</table>
</div>
預期結果:
主要原因是沒有告知系統換行
解決方式最簡單可以使用@
來組合換行字串,效果如圖片
@{
var rows = new[]{
new{
Title="Title1",
Description=@"123 Enter
456 Enter
789
"
},
new
{
Title="Title2",
Description = "N/A",
}
};
}
<br />
線上測試連結 : https://dotnetfiddle.net/HQ8lNH
使用@系統會在compiler後自動加\r\n
在跨行處,如圖片
更詳細可以參考我之前寫的文章:【C#】小知識 #2 : 字串處理
謝謝暐翰的幫忙~有嘗試此方法且成功了,但我是使用$@
才會呈現斷行,若只使用@
則不會斷行,是因為我有多行所以要加上串接嗎?但斷行不就代表多行了嗎?這個部分比較不清楚...
anniecat以你的例子不加$
應該也是一樣的,$是用在相接字串用,如圖片
你的問題應該是JavaScript沒有提供直接換行的方法,
那就在後端打
"123 Enter"+
"456 Enter"+
" 789 "
另外換行的話可以試試用\n換行.
這應該是JavaScript的原因,
跟MVC沒有關係...
只有換行還不夠
你還需要用 <pre>
來保留你的空格跟換行
const Title = "Title1\n";
const Description = "123 Enter\n"+
"456 Enter\n"+
" 789 "
const preTag = document.createElement('pre');
const title = document.createTextNode(Title);
const text = document.createTextNode(Description);
preTag.appendChild(title)
preTag.appendChild(text)
document.body.appendChild(preTag);
dragonH,不好意思,因為我的程式在組成表格時有加入<pre>
這個element,但實際跑出來後則不會換行,是否還可以怎麼調整呢? 謝謝。
@for (var i = 0; i < rows.Length; i++)
{
var row = rows[i];
<tr>
<td colspan='2'>
<b>@(row.Title)<br /></b>
<pre>@(row.Description)</pre>
</td>
</tr>
}
這應該就是 mvc 的鍋了
這個可以參考一下
其實,我會用textarea這個元件來處理說。
搭配一下css處理就可以了。讓它變得不像textarea。(一般就是去框線就夠了)
謝謝浩瀚星空~有嘗試<textarea>
,確實可以達成,只是還會產生其他問題,例如:如果我要符合表格的大小<td><textarea>...</textarea></td>
不知道要怎麼去調整,因為表格的大小是以百分比去設計的,不知道有什麼方向可以參考嗎?謝謝!
<style>
textarea{
overflow:hidden;
border:solid windowtext 0px;
resize:none;
overflow-wrap: break-word;
}
</style>
嗯,用textarea確實有高度這樣的問題。
一般只能應用在固定高度上。
如果非得再處理自適應高度的情況,則還是要搭配js幫你處理就是了。
好的,謝謝你的幫忙~