[英]If condition not working in HTML page with C# code
我正在使用以下代碼用數據填充表。 if
語句沒有像我預期的那樣工作。 條件塊中的兩個語句都被執行。
@if (--somecondition--)
{
<table>
foreach (Message userMessage in UserMessages)
{
<tr>
if(@userMessage.Message.MessageText.Length <= 10)
{
<td>
@userMessage.Message.MessageText
</td>
}
if(@userMessage.Message.MessageText.Length > 10)
{
<td>
@userMessage.Message.MessageText.Substring(0, 10)
</td>
}
</tr>
}
</table>
}
我在這里失蹤了什么? 不是這樣的使用不可能嗎?
編輯(看到答案后) :
我想 -
進入代碼后,您不需要使用“@”作為“if”的結構前綴
你需要從@
開始......
@foreach (Message userMessage in UserMessages)
{
和...
@if(userMessage.Message.MessageText.Length <= 10)
{
如果沒有它,那么if(
仍被視為HTML。
@
符號標識Razor語法的開頭(即C#代碼),並將繼續成為剃刀代碼塊,直到達到適當的終結符。 有許多方法可以將其移回HTML,在您的示例中最常見的方法是包含一個html標記,例如<td>
。
這是您的代碼的完整版本,希望它可以幫助您了解它應該如何工作:
<table>
//due to the table tag, we are current inside HTML
//so we need to use the @ symbol to move back to razor syntax
@foreach (Message userMessage in UserMessages)
{
<tr>
//using this tag again changes us back to HTML mode
//so again we must use the at symbol
@if(userMessage.Message.MessageText.Length <= 10)
{
//still Razor
<td>
//back in HTML mode
@userMessage.Message.MessageText
</td>
}
@if(userMessage.Message.MessageText.Length > 10)
{
<td>
@userMessage.Message.MessageText.Substring(0, 10)
</td>
}
</tr>
}
</table>
(我知道這些評論在Razor中不起作用所以不要添加它們)
並清理你最初的想法。 如果您沒有第一個<tr>
標簽,那么以下內容將起作用......
@foreach (Message userMessage in UserMessages)
{
if(userMessage.Message.MessageText.Length <= 10)
{
注意整個if語句行不需要@
符號,因為我們從未移回到HTML模式。
你的代碼的問題在於你混淆了什么是HTML和什么是Razor。 @
符號應該是你的Razor代碼啟動的地方,然后你不需要在Razor代碼中使用它。
當你寫if(@userMessage.Message.MessageText.Length <= 10)
if
不被視為Razor代碼而是HTML的一部分。 所以每當你離開HTML並進入Razor模式時,你需要有一個@
標記。 if
語句應該看起來像@if(userMessage.Message.MessageText.Length <= 10)
。
代碼的完整示例如下所示:
<table>
@foreach (Message userMessage in UserMessages)
{
<tr>
@if(userMessage.Message.MessageText.Length <= 10)
{
<td>
@userMessage.Message.MessageText
</td>
}
@if(userMessage.Message.MessageText.Length > 10)
{
<td>
@userMessage.Message.MessageText.Substring(0, 10)
</td>
}
</tr>
</table>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.