Razor Webmatrix-使用搜索结果更改可变螺钉

Razor Webmatrix-使用搜索结果更改可变螺钉,razor,pagination,webmatrix,Razor,Pagination,Webmatrix,我有一个搜索页面,它可以返回我在多个页面上的搜索结果。这真的很有效。代码如下: //Paging Variables var pageSize = 6; var totalPages = 0; var count = 0; var page = UrlData[0].IsInt() ? UrlData[0].AsInt() : 1; var offset = (page -1) * pageSize; string selectQueryString = "SELECT * FROM

我有一个搜索页面,它可以返回我在多个页面上的搜索结果。这真的很有效。代码如下:

//Paging Variables

var pageSize = 6; 
var totalPages = 0; 
var count = 0;
var page = UrlData[0].IsInt() ? UrlData[0].AsInt() : 1;
var offset = (page -1) * pageSize;

string selectQueryString =  "SELECT * FROM Property_Info";

queryResults = db.Query(selectQueryString); 
count  = queryResults.Count();
totalPages = count/pageSize;        
if(count % pageSize > 0){
    totalPages += 1;
}

selectQueryString += "OFFSET @0 ROWS FETCH NEXT @1 ROWS  ONLY;";
queryResults = db.Query(selectQueryString, offset, pageSize);
我的问题是,我想给用户一个选项来更改每个页面上显示的属性数量。为此,我将“pageSize”变量设置为0,该值根据查询字符串的不同而变化

问题是,分页停止工作。当我转到第二页时,它会显示与第一页相同的结果

以下是查询字符串代码:

//Set page size

if (Request.QueryString["pagesize"].AsInt() == 2)
{
    pageSize = 2;
} 
else
{
    pageSize = 4;
}

各位有什么想法吗?

我已经测试了您的代码,并结合SQL Server 2012 Express数据库进行了以下小改动:

@{
    var pageSize = Request.QueryString["pagesize"].AsInt() == 2 ? 2 : 4;
    var totalPages = 0; 
    var count = 0;
    var page = UrlData[0].IsInt() ? UrlData[0].AsInt() : 1;
    var offset = (page -1) * pageSize;

    var db = Database.Open("yourDb");
    var selectQueryString = "SELECT * FROM Property_Info";

    count = db.Query(selectQueryString).Count();
    totalPages = count/pageSize;        
    if(count % pageSize > 0){
        totalPages += 1;
    }

    selectQueryString += " OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY";    
    var queryResult = db.Query(selectQueryString, offset, pageSize);
}
<!DOCTYPE html>
<html>
    <body> 

        <p>Page @page of @totalPages</p>

        @foreach(var row in queryResult){
            // here your activities on rows ....
        }

        @{
            for (var i = 1; i < totalPages + 1; i++){
            <a href="/search/@i@(Request.QueryString.ToString().Length == 0 ?
                null : "?" +   Request.QueryString)">@i</a>
            }
        }
    </body>
</html>
@{
var pageSize=Request.QueryString[“pageSize”].AsInt()==2?2:4;
var totalPages=0;
var计数=0;
var page=UrlData[0]。IsInt()?UrlData[0]。AsInt():1;
变量偏移量=(第1页)*页面大小;
var db=Database.Open(“yourDb”);
var selectQueryString=“选择*来自属性信息”;
count=db.Query(selectQueryString.count();
totalPages=计数/页面大小;
如果(计数%pageSize>0){
总页数+=1;
}
选择QueryString+=“偏移量@0行仅取下@1行”;
var queryResult=db.Query(选择querystring、offset、pageSize);
}
第页@共页@totalPages

@foreach(queryResult中的var行){ //这是您的行上的活动。。。。 } @{ 对于(变量i=1;i
所有这些对我来说都很好,但我从您的链接中看到,真正的代码要复杂得多。

试着从这个工作示例开始,逐步添加其他代码。

只是一个想法,因为我使用的是SQL Express,所以fetch/offset是最好的方法吗?我刚刚读到,这主要用于SQL compact?
OFFSET
FETCH
从2012版开始由SQL Express支持。太好了,谢谢您提供的信息。我还没有接近解决我的问题,但很高兴知道我没有完全使用错误的代码!你能把你的代码和它结合起来吗?i、 你把你的“查询字符串代码”放在哪里了?当然,我会上传完整的代码并发布链接。