如何更改绑定到 Razor 页面上模型的特定文本的字体颜色?

Posted

技术标签:

【中文标题】如何更改绑定到 Razor 页面上模型的特定文本的字体颜色?【英文标题】:How do I change the font color of a specific text bound to a model on a Razor page? 【发布时间】:2020-05-10 01:48:06 【问题描述】:

我正在构建一个 ASP.NET Core Web 应用程序,并希望将结果表中的某些文本设置为与表的其余部分不同的颜色。例如:

我正在尝试在 javascript 中执行此操作,但似乎遇到了问题,因为在使用所选参数单击“搜索”按钮后,数据是从模型在页面上生成的。这是我的 html Razor 页面中的内容:

@foreach (var item in Model.SecurityLog)

  <tr>
  <td style="width:7% !important" id="eventType">
      @Html.DisplayFor(modelItem => item.EventType.Name)
  </td>
  <td style="width:9% !important">
      @Html.DisplayFor(modelItem => item.ContactName)
  </td>

下面是 Razor 页面上的 JavaScript 代码:

 var text = document.getElementById("searchString");
 var str = text.innerHTML;
 var reg = /RL Solution Required/ig;

 var toStr = String(reg);
 var search = (toStr.replace('\/g', '|')).substring(1);
 var searches = search.split("|");

 if (searches.indexOf("RL Solution Required") > -1) 
    str = str.replace(/RL Solution Required/g, '<span style="color:red;">R/L Solution Required</span>');
 
 document.getElementById("searchString").innerHTML = str;

我正在尝试将 RL 解决方案所需字体设为红色。我没有遇到此代码的任何错误,但字体是黑色的。 在此先感谢您的帮助。

【问题讨论】:

应更新问题以包含所需行为、特定问题或错误以及重现问题所需的最短代码。 变色的标准是什么?这可以通过 CSS 的 nth 选择器来完成吗? @JohnPavek 标准是如果 EventType 包含“需要 RL 解决方案”字样,则将其显示为红色。我不熟悉第 n 个选择器,但我现在会研究一下。谢谢。 【参考方案1】:

您不需要为此使用 Javascript。只需使用 Razor。

@foreach (var item in Model.SecurityLog)

  <tr>
  <td style="width:7% !important">        
      @
        string eventType = item.EventType.Name;
      
      @if(eventType.Contains("RL Solution Required")
        <span style="color:red;">@Html.DisplayFor(modelItem => eventType)</span>
      else
        @Html.DisplayFor(modelItem => eventType)
                
  </td>
  <td style="width:9% !important">
      @Html.DisplayFor(modelItem => item.ContactName)
  </td>

【讨论】:

这很完美!我没有意识到我怎么能在 Razor 中做到这一点!谢谢@RC 可乐。【参考方案2】:

您遇到的问题可能有多种原因。

例如:我看到您在某些 css 中使用了 !important。如果您有另一个跨度标记,其颜色属性也设置为 !important,它将覆盖您插入到 html 中的颜色。

最好的办法是在浏览器的开发工具中检查元素并尝试修改 css 以正确更新那里的颜色。如果您可以在此处更新并描述您所做的更改,则可以更轻松地缩小您在此处遇到的具体问题。

如果您能够使用 css 正确修改元素,并且生成的代码中需要更改某些内容,那么您也许可以从那里着手解决。

【讨论】:

我无法使用开发人员工具更改 CSS,因为我无法使用 $("#eventType").val() 访问数据行中的数据。我很难访问数据,因为它是通过模型动态生成的。开发工具只能让我为屏幕上的静态内容设置样式。

以上是关于如何更改绑定到 Razor 页面上模型的特定文本的字体颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Asp .Net Core 3.1 Razor 页面:复杂模型绑定

模型绑定来自 Razor 页面发布表单上的路由参数

如何绑定到列表作为 MVC 3 Razor 中模型上的属性?

Razor 页面获取属性查询命名

如何防止在 ASP.NET Core 的 Razor 视图 HTML 中禁用或只读输入字段的模型绑定?

Razor 页面:如何动态更改按钮属性(颜色、文本)以反映后端更改