【问题标题】:format a query output for html格式化 html 的查询输出
【发布时间】:2012-10-11 01:04:20
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以使用c 字符串格式 - 请参阅stackoverflow.com/questions/7087495/…
  • 有点帮助,谢谢。我无法让代码接受我的格式,所以我使用了错误的语法(再次!)这是字符串: var itot = db.Query("SELECT SUM(SUBTOTAL) as Invoices from dbo.SALESORD_HDR where ORDERDATE = 41190 和 INVOICECOUNT >= 1"); var stotl = new WebGrid(来源: itot); var qtot = db.Query("SELECT SUM(SUBTOTAL) as Quotes FROM dbo.SALESORD_HDR where ORDERDATE > 41190"); var qtotl = new WebGrid(来源:qtot);然后我在 html 中呈现结果:

    @qtotl.GetHtml() @stotl.GetHtml()

标签: sql razor formatting webmatrix


【解决方案1】:

您可以使用列构造函数的 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>

但我认为没有理由在您的情况下使用 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>

【讨论】:

  • 好的,那么我如何让它只显示我需要的单个结果呢?如果我只是插入@var,我会得到一串代码文本。抱歉这么厚,但我该怎么做才能让数据显示我想要的方式?使用纯 HTML 页面而不是 CSHTML 和 Razor 会更好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2015-06-07
  • 2017-08-11
  • 1970-01-01
相关资源
最近更新 更多