Sql 格式化html的查询输出

Sql 格式化html的查询输出,sql,razor,formatting,webmatrix,Sql,Razor,Formatting,Webmatrix,我正在使用MS WebMatrix从数据库中获取的数据创建一个动态CSHTML页面。我正在使用razor语法 我将数据返回到我的CSHTML页面,但它有尾随数字等。例如,我想将“123.4568”格式化为“$123.46” 如何以所需的格式显示结果?我还想在达到目标时更改文本颜色,等等。您可以使用列构造函数的格式可选参数设置WebGrid中的值格式 您可以尝试这样的方法,如果值>50,发票的颜色为红色,否则为蓝色 <html lang="en"> <head>

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

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


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

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

您可以尝试这样的方法,如果值>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>

.column1{颜色:红色;字体大小:粗体;}
.column2{颜色:蓝色;}
@stot1.GetHtml(
列:stot1.columns(
stot1.列(
栏目名称:“发票”,
格式:@
50?“第1列”:“第2列”)>
@项目.发票.ToString(“C”)
)
)
)

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

WebGrid helper呈现数据库中的数据,并支持分页和排序,但您的查询只返回一个值,您不需要它们中的任何一个

已编辑

更好的解决方案是使用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>
@{
var db=Database.Open(“YourTable”);
var itot=db.QueryValue(“选择SUM(小计)作为Salesord_hdr中的发票,其中Orderdate=41190,Invoicecount>=1”);
}
.column1{颜色:红色;字体大小:粗体;}
.column2{颜色:蓝色;}
发票:
50 ? “column1”:“column2”)>@itot.ToString(“C”)


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

您可以尝试这样的方法,如果值>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>

.column1{颜色:红色;字体大小:粗体;}
.column2{颜色:蓝色;}
@stot1.GetHtml(
列:stot1.columns(
stot1.列(
栏目名称:“发票”,
格式:@
50?“第1列”:“第2列”)>
@项目.发票.ToString(“C”)
)
)
)

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

WebGrid helper呈现数据库中的数据,并支持分页和排序,但您的查询只返回一个值,您不需要它们中的任何一个

已编辑

更好的解决方案是使用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>
@{
var db=Database.Open(“YourTable”);
var itot=db.QueryValue(“选择SUM(小计)作为Salesord_hdr中的发票,其中Orderdate=41190,Invoicecount>=1”);
}
.column1{颜色:红色;字体大小:粗体;}
.column2{颜色:蓝色;}
发票:
50 ? “column1”:“column2”)>@itot.ToString(“C”)


您可以使用
c
字符串格式-请参阅一些有帮助的内容,谢谢。我无法让代码接受我的格式,所以我使用了错误的语法(再次!)下面是字符串:var itot=db.Query(“选择SUM(小计)作为来自dbo.SALESORD_HDR的发票,其中ORDERDATE=41190,INVOICECOUNT>=1”);var stotl=新的WebGrid(来源:itot);var qtot=db.Query(“选择SUM(小计)作为来自dbo.SALESORD_HDR的报价,其中ORDERDATE>41190”);var qtotl=新的WebGrid(来源:qtot);然后我以html的形式呈现结果:@qtotl.GetHtml()@stotl.GetHtml()

您可以使用
c
字符串格式-请参阅一些有用的内容,谢谢。我无法让代码接受我的格式,所以我使用了错误的语法(再次!)下面是字符串:var itot=db.Query(“选择SUM(小计)作为来自dbo.SALESORD_HDR的发票,其中ORDERDATE=41190,INVOICECOUNT>=1”);var stotl=新的WebGrid(来源:itot);var qtot=db.Query(“选择SUM(小计)作为来自dbo.SALESORD_HDR的报价,其中ORDERDATE>41190”);var qtotl=新的WebGrid(来源:qtot);然后我以html的形式呈现结果:@qtotl.GetHtml()@stotl.GetHtml()

好的,那么如何让它只显示我需要的单个结果呢?如果我只是插入@var,我会得到一个代码文本字符串。很抱歉这么厚,但是我该怎么做才能让数据显示出我想要的内容呢?我会更好地使用纯HTML页面而不是CSHTML和Razor吗?好的,那么我如何让它只显示我需要的单一结果呢?如果我只是插入@var,我会得到一个代码文本字符串。很抱歉这么厚,但是我该怎么做才能让数据显示出我想要的内容呢?使用纯HTML页面而不是CSHTML和Razor会更好吗?