C# ASP.NET WebMatrix SQL数据库每次单击按钮是否提取下一行?

C# ASP.NET WebMatrix SQL数据库每次单击按钮是否提取下一行?,c#,sql,asp.net,razor,webmatrix,C#,Sql,Asp.net,Razor,Webmatrix,我是一个初学者,这是我第一次使用数据库。我试图在每次单击按钮时从SQL数据库表中获取下一行。我创建了一个按钮来发布,并试图每次增加3行,但它不起作用 如您所见,偏移值始终为0,默认行数为3,当有人单击按钮时,我希望每次增加3行。如果第一次有人单击按钮,那么我希望行数从3增加到6,第二次从6增加到9,依此类推 我正试图通过ASP.NET Razor循环或类似的方法来实现这一点,每次使用提交按钮更改和更新FETCH NEXT ROWS的值 任何帮助都将不胜感激。谢谢&这是我的代码: .cshtml

我是一个初学者,这是我第一次使用数据库。我试图在每次单击按钮时从SQL数据库表中获取下一行。我创建了一个按钮来发布,并试图每次增加3行,但它不起作用

如您所见,偏移值始终为0,默认行数为3,当有人单击按钮时,我希望每次增加3行。如果第一次有人单击按钮,那么我希望行数从3增加到6,第二次从6增加到9,依此类推

我正试图通过ASP.NET Razor循环或类似的方法来实现这一点,每次使用提交按钮更改和更新FETCH NEXT ROWS的值

任何帮助都将不胜感激。谢谢&这是我的代码:

.cshtml

@{
    var i += 3;
    var value = i + Request["submit"];
    var db = Database.Open("WebSite");
    var selectQueryString = "SELECT * FROM WebSite ORDER BY NAME OFFSET 0 ROWS FETCH NEXT ('3 + value.AsInt()') ROWS ONLY";
}

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <table>
            @foreach(var row in db.Query(selectQueryString))
            {
                <tr>
                    <td>@row.NAME</td>
                    <td><img alt="#" src="@row.URL"></td>
                </tr>
            }
        </table>
        <form action="" method="post">
            <button type="submit" name="submit">Load More</button>
        </form>
    </body>
</html>
@{
var i+=3;
var值=i+请求[“提交”];
var db=数据库。打开(“网站”);
var selectQueryString=“选择*从网站按名称排序偏移量0行获取下一步('3+value.AsInt()')行”;
}
@foreach(db.Query中的变量行(selectQueryString))
{
@row.NAME
}
加载更多

您的代码中有一些错误

我已将您的请求应用于以下Northwind示例数据库

@{
    var rowsNumb = 3;
    var db = Database.Open("Northwind");

    if (IsPost){
        rowsNumb = Request["lastRec"].AsInt() + 3;
    }

    var maxRecs = db.QueryValue("SELECT COUNT([Product Id]) FROM Products");
    var sql = @"SELECT * FROM Products ORDER BY [Product Id] 
                OFFSET 0 ROWS FETCH NEXT @0 ROWS  ONLY";
    rowsNumb = (rowsNumb > maxRecs ? maxRecs : rowsNumb);
    var result = db.Query(sql, rowsNumb);
}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <table>
            @foreach(var row in result){
                <tr>
                    <td>@row["Product Name"]</td>
                    <td>@row["English Name"]</td>
                    <td>@row["Unit Price"]</td>
                </tr>
            }
        </table>
        <form action="" method="post">
            <input type="hidden" name="lastRec" value="@rowsNumb" />
            <button type="submit">Load More</button>
        </form>
    </body>
</html>
@{
var-rowsumb=3;
var db=数据库.Open(“北风”);
如果(IsPost){
rowsNumb=Request[“lastRec”].AsInt()+3;
}
var maxRecs=db.QueryValue(“从产品中选择计数([Product Id]));
var sql=@“按[产品Id]从产品订单中选择*
偏移量0行仅取下@0行”;
rowsumb=(rowsumb>maxRecs?maxRecs:rowsumb);
var result=db.Query(sql,rowsumb);
}
@foreach(结果中的var行){
@行[“产品名称”]
@行[“英文名称”]
@行[“单价”]
}
加载更多

我使用了一个隐藏字段来存储上次和每次显示的行数,并测试要显示的行数是否大于总行数。

我知道您是一名初学者,但您能否为我们提供更多关于您尝试创建何种web应用程序的信息。Razor是一个视图引擎。视图中的唯一代码应该是显示逻辑。您应该在控制器中执行数据库访问代码。然后,您可以使用类似Html.BeginForm的东西来呈现表单,并使其在控制器上调用操作。@BenRobinson我正在尝试从数据库加载更多项,但我不能使用分页,因为分页会跳转到下一组结果。