我需要在Webmatrix中的两个日期之间获得搜索结果。我不知道如何进入搜索或我做错了什么。这是我的代码。我没有收到任何错误,但网格中只显示列名。
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Management";
var db = Database.Open("OMD");
var startdate = Request["startdate"];
var enddate = Request["enddate"];
var selectCommand ="SELECT * FROM Ordr Where Date BETWEEN '" + startdate + "' AND '" + enddate + "'";
var selectedData = db.Query(selectCommand);
var grid = new WebGrid(source: selectedData, defaultSort: "Date", rowsPerPage:10);
}
@grid.GetHtml(
columns:grid.Columns(
grid.Column("Date", format:@<Text>@item.Date</Text>),
grid.Column("Status", format:@<Text>@item.Status</Text>),
grid.Column("OStore", format:@<Text>@item.OStore</Text>),
grid.Column("CStore", format:@<Text>@item.CStore</Text>),
grid.Column("Employee", format:@<Text>@item.Employee</Text>)
)
)
我正在搜索格式MM / DD / YYYY,就像它在表格中一样。
答案 0 :(得分:3)
以下是使用Razor Database辅助参数约定安全地执行此操作的方法:
var db = Database.Open("OMD");
var startdate = Request["startdate"].AsDateTime();
var enddate = Request["enddate"].AsDateTime();
var selectCommand ="SELECT * FROM Ordr Where Date >= @0 AND Date <= @1";
var selectedData = db.Query(selectCommand, startdate, enddate);
有关在ASP.NET网页(Razor)中使用数据的更多信息,请阅读此内容:http://www.asp.net/web-pages/tutorials/data/5-working-with-data
答案 1 :(得分:0)
我正在搜索格式MM / DD / YYYY,就像它在表格中一样。
这是一种常见的误解。 date
(和datetime
)数据类型不存储格式化日期(dd / mm / yyyy是您看到的格式)。
如果您正在使用日期的字符串表示(您在这里),那么您应该将其格式化为:
YYYY-MM-DD HH:MI:SS.NNN
这是一种通用格式,可以解决您遇到的问题。
另一种方法是参数化您的查询并传递日期对象。