Html.Raw中的ASP MVC颜色字符串

问题描述 投票:0回答:3

我想比较两个字符串。在每个index中是否存在差异,我想将红色(如果不匹配)或绿色(如果匹配)的特定char着色。

            <li>
                @for (int i = 0; i < item.AnswersList.Count; i++)
                {
                    var answerArray = item.AnswersList[i].Output.ToArray();
                    var outputArray = item.OutputList[i].Output.ToArray();

                    for (int j = 0; j < answerArray.Length; i++)
                    {
                        if (answerArray[j] == outputArray[j])
                        {
                            @Html.Raw( How to print colorful char here?);
                        }
                    }
                }
            </li>

有色的string需要在<li>标签中排成一行。

编辑:

我对我的代码进行了编辑:

<div style="color: green;">
     @Html.Raw(outputArray[j])
</div>

但我得到这样的输出:

enter image description here

如何在<li>标签中使它成为一个单词?

asp.net-mvc razor
3个回答
1
投票

请尝试以下方法:

<li style="display: flex;>
   @for (int i = 0; i < item.AnswersList.Count; i++)
   {
      var answerArray = item.AnswersList[i].Output.ToArray();
      var outputArray = item.OutputList[i].Output.ToArray();

      for (int j = 0; j < answerArray.Length; i++)
      {
         if (answerArray[j] == outputArray[j])
         {
            <span style="color: green;">
              ...
            </span>
         }
      }
   }
</li>

1
投票

我希望你需要这个:

       <li>
            @for (int i = 0; i < item.AnswersList.Count; i++)
            {
                var answerArray = item.AnswersList[i].Output.ToArray();
                var outputArray = item.OutputList[i].Output.ToArray();

                for (int j = 0; j < answerArray.Length; i++)
                {
                    bool isMatch = answerArray[j] == outputArray[j];
                    <div style="color: @(isMatch ? "green" : "red");">
                        @Html.Raw(outputArray[j])
                    </div>
                }
            }
        </li>

UPD:如果你需要一行中的所有字符,那么使用span而不是div

UPD2:尝试这个(跨度但没有换行):

<span style="color: @(isMatch ? "green" : "red");margin:0;padding:0">@Html.Raw(outputArray[j])</span>

1
投票

这应该完美。这只是确保你不在你的<span>标签周围留下任何空白的问题,如下所示:

<li>
    @for (int i = 0; i < item.AnswersList.Count; i++)
    {
        var answerArray = item.AnswersList[i].Output.ToArray();
        var outputArray = item.OutputList[i].Output.ToArray();

        for (int j = 0; j < answerArray.Length; i++)
        {
            if (answerArray[j] == outputArray[j])
            {<span style="color:green">@Html.Raw(outputArray[j])</span>}
            else
            {<span style="color:red">@Html.Raw(outputArray[j])</span>}
        }
    }
</li>

推荐问答