1

我需要在 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 进行搜索,就像在表格中一样。

4

2 回答 2

3

以下是如何使用 Razor 数据库帮助程序参数约定安全地执行此操作:

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

于 2013-09-07T08:32:41.973 回答
0

我正在使用格式 MM/DD/YYYY 进行搜索,就像在表格中一样。

这是一个普遍的误解。date(和datetime)数据类型不存储格式化的日期(dd/mm/yyyy 是您看到的格式)。

如果您使用日期的字符串表示形式(您在这里),那么您应该像这样格式化它:

YYYY-MM-DD HH:MI:SS.NNN

这是一种通用格式,可以解决您遇到的问题。

另一种方法是参数化您的查询并传递一个日期对象

于 2013-09-06T18:49:37.690 回答