格式化html的查询输出

时间:2012-10-11 01:04:20

标签: sql razor formatting webmatrix

我正在使用MS WebMatrix从数据库中获取的数据创建动态CSHTML页面。我正在使用剃刀语法。

我将数据返回到我的CSHTML页面,但它有尾随数字等。例如,我想将“123.4568”格式化为“$ 123.46”

如何以我需要的格式显示结果?我还希望在达到目标时更改文本颜色等。

1 个答案:

答案 0 :(得分:1)

您可以使用列构造函数的 format 可选参数在WebGrid中设置值的格式。

您可以尝试这样的事情,如果值> gt,发票的颜色为红色。 50或蓝色,如果不是

<html lang="en">
    <head>
        <style>
            .column1 {color: red; font-weight: bold;}
            .column2 {color: blue;}
        </style>
    </head>
    <body>
        <p>@stot1.GetHtml(
            columns:stot1.Columns(
                stot1.Column(
                    columnName:"Invoices",
                    format:@<text>
                                <span class=@(item.Invoices > 50 ? "column1" : "column2")>
                                    @item.Invoices.ToString("C")
                                </span>
                            </text>
                )
            )
        )</p>
    </body>
</html>

但我认为没有理由在你的情况下使用WebGrids。

WebGrid帮助器从数据库呈现数据并支持分页和排序,但是您的查询只返回一个值,而您不需要其中任何一个。

<强>被修改

更好的解决方案是使用QueryValue方法查询表,该方法返回单个标量值,并显示不带WebGrid的值。

以下为唯一发票的示例

@{
    var db = Database.Open("YourTable");
    var itot = db.QueryValue("SELECT SUM(Subtotal) AS Invoices FROM Salesord_hdr where Orderdate = 41190 and Invoicecount >= 1");
}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            .column1 {color: red; font-weight: bold;}
            .column2 {color: blue;}
        </style>
    </head>
    <body>
        <p>Invoices: 
            <span class=@(itot > 50 ? "column1" : "column2")>@itot.ToString("C")</span>
        </p>
    </body>
</html>