我已经在这个网站上问了几个问题,并回答了很多小问题,但是我现在正试图将整个过程拼凑起来。
我有一个页面,其中显示了我数据库中的所有属性。不过,我需要找到一种方法来优化这些结果,例如,仅显示具有4个卧室等的属性。问题是,我不知道搜索词中可能有多少个变量。所以这是一个例子。
我决定从查询字符串中提取所有变量,?numbedrooms = 4&?numbathrooms = 3
这里是我到目前为止的代码,但是它不起作用:
@{ var db = Database.Open("StayInFlorida"); IEnumerable<dynamic> queryResults; int numBedrooms = Request.QueryString["numBedrooms"].AsInt(); int numBathrooms = Request.QueryString["numBathrooms"].AsInt(); int sleeps = 0; List<int> argList = new List<int>(); if (Request.QueryString["sleeps"].IsInt()) { sleeps = Request.QueryString["sleeps"].AsInt(); } int numOfArguments = 0; string selectQueryString = "SELECT * FROM PropertyInfo "; if (numBedrooms != 0) { argList.Add(numBedrooms); selectQueryString += "WHERE numBedrooms = @0 "; numOfArguments++; //increment numOfArguments by 1 } if (numBathrooms != 0) { argList.Add(numBathrooms); if (numOfArguments == 0) { selectQueryString += "WHERE numBathrooms = @0 "; } else { selectQueryString += "AND numBathrooms = @" + numOfArguments + " "; } numOfArguments++; } if (sleeps != 0) { argList.Add(sleeps); if (numOfArguments == 0) { selectQueryString += "WHERE sleeps = @0 "; } else { selectQueryString += "AND sleeps = @" + numOfArguments + " "; } numOfArguments++; } selectQueryString += "ORDER BY numBedrooms DESC"; //Adjust this order by clause how you see fit. int[] argArray = argList.ToArray(); if (argArray.Length > 0) { queryResults = db.Query(selectQueryString, argArray); //stores a dynamic list to 'queryResults' which can later be easily iterated through with a 'foreach' list and written to the page with razor. } } <!--Results Start--> @foreach(var row in queryResults){ <div class="container"> <h4><a href="/[email protected]">@row.PropertyName</a></h4> <h5>Bedrooms: @row.NumBedrooms Bathrooms: @row.NumBathrooms Sleeps: @row.NumSleeps</h5> </div> } <!--Results Finish-->
因此,为了清楚起见,我需要找到一种方法来检查每个搜索查询是否有查询字符串条目,如果存在,请将其附加到SQL语句中以查看所有匹配的结果?
我已经在这个网站上问了几个问题,并回答了很多小问题,但是我现在正试图将整个过程拼凑起来。我有一个页面,其中显示了我拥有的所有属性...
主要来说,您似乎需要一个好的“用户界面”页面。