首页 > 解决方案 > 检查字符串是否是 Razor 中的数字

问题描述

在应用程序中有一个网格,其中有一列包含以下代码:

columns.Add(m => m.Ticket.Truck)
.Encoded(false)
.Sanitized(false)
.RenderValueAs(m =>
    @<div>
        @if (m.Ticket.Truck.ToLower() == "rusty")
        {
            <span style="color:red; font-size:14px; font-weight:bold;">@m.Ticket.Truck</span>
        }
        else
        {
            <span>@m.Ticket.Truck</span>
        }
    </div>).Titled("Truck");

在数据集中,大多数卡车都有一个数字作为其标识符,尽管有些卡车有名字(例如 Rusty)。我不想在所有卡车名称中硬编码,而是想修改代码,以便检查@m.Ticket.Truck它是否是数字,然后仅在不是数字时应用标签样式。但是,我不知道在 Razor 中执行此操作的正确语法。

我发现的帖子只显示了如何在服务器端处理这个问题。任何有关如何在 Razor 中执行此操作的指导将不胜感激。

标签: razor

解决方案


感谢这篇文章,我想通了。还重构了代码。

        columns.Add(m => m.Ticket.Truck)
        .Encoded(false)
        .Sanitized(false)
        .RenderValueAs(m =>
    @<div>
    @{ 
        string style = "";
        int value;
        if (!int.TryParse(m.Ticket.Truck, out value))
        {
            // Truck is not an integer so set CSS
            style = "style=color:red;font-size:14px;font-weight:bold;";
        }
    }
         <span @style>@m.Ticket.Truck</span>
    </div>).Titled("Truck");

请注意,样式字符串中的分号后故意没有空格。当存在空格时,Razor 无法在 HTML 中正确处理它。


推荐阅读