C# 如何在ASP.NET Web应用程序中筛选日期
我对MVC和软件开发非常陌生,我想在我的应用程序中实现按日期搜索的功能。在索引视图中,我希望用户能够通过网页上可用的两个日期字段“日期”和“订单日期”进行搜索。目前这是我在视图中的代码,它基本上指定了页面的布局C# 如何在ASP.NET Web应用程序中筛选日期,c#,asp.net,asp.net-mvc,search,C#,Asp.net,Asp.net Mvc,Search,我对MVC和软件开发非常陌生,我想在我的应用程序中实现按日期搜索的功能。在索引视图中,我希望用户能够通过网页上可用的两个日期字段“日期”和“订单日期”进行搜索。目前这是我在视图中的代码,它基本上指定了页面的布局 using (Html.BeginForm("Index","PurchaseOrder",FormMethod.Get)) { <p> Search by Date: &
using (Html.BeginForm("Index","PurchaseOrder",FormMethod.Get))
{
<p>
Search by Date: @Html.TextBox("searchBy","dateSearchBegin") to: @Html.TextBox("searchBy","dateSearchEnd")
<input type="submit" value="Search" /> <br /><br />
Search by Order Date: @Html.TextBox("searchBy","dateOrderedBegin") to: @Html.TextBox("searchBy","dateOrderedEnd")
<input type="submit" value="Search" />
<br /> <br />
Search by: @Html.RadioButton("searchBy","Requestor", true) Requestor
@Html.RadioButton("searchBy","Vendor") Vendor
@Html.RadioButton("searchBy","workOrder") Work Order # <br />
@Html.TextBox("search","", new { style = "width:10000px" })
<input type="submit" value="Search" />
</p>
}
使用(Html.BeginForm(“Index”、“PurchaseOrder”、FormMethod.Get))
{
按日期搜索:@Html.TextBox(“searchBy”、“dateSearchBegin”)至:@Html.TextBox(“searchBy”、“dateSearchEnd”)
按订单日期搜索:@Html.TextBox(“searchBy”、“dateOrderedBegin”)至:@Html.TextBox(“searchBy”、“dateOrderedEnd”)
搜索者:@Html.RadioButton(“搜索者”,“请求者”,true)请求者
@RadioButton(“搜索者”、“供应商”)供应商
@Html.RadioButton(“searchBy”、“workOrder”)工单
@TextBox(“搜索”,new{style=“width:10000px”})
}
在控制器中,我有这个代码。这就是我试图提供逻辑的地方,以便能够通过不同的字段进行过滤
// GET: PurchaseOrder
public ActionResult Index(string searchBy, string search, int? page)
{
if (searchBy == "Requestor")
{
return View(db.PurchaseOrders.Where(x => x.Requestor.ToUpper().Contains(search)).OrderBy(i => i.DateOrdered).ToPagedList(page ?? 1, 15));
}
else if (searchBy == "Vendor")
{
return View(db.PurchaseOrders.Where(x => x.Vendor.ToUpper().Contains(search)).OrderBy(i=>i.DateOrdered).ToPagedList(page??1,15));
}
else if (searchBy == "workOrder")
{
return View(db.PurchaseOrders.Where(x => x.PurchaseRequest_.ToUpper().Contains(search)).OrderBy(i => i.DateOrdered).ToPagedList(page ?? 1, 15));
}
else if (searchBy == "dateSearchBegin")
{
return View(db.PurchaseOrders.Where(x => x.Date > "dateSearchBegin" && x.Date < "dateSearchEnd").OrderBy(i => i.Date).ToPagedList(page ?? 1,15));
}
else if (searchBy == "dateSearchEnd")
{
return View(db.PurchaseOrders.Where(x => x.Date > "dateOrderedBegin" && x.Date < "dateOrderedEnd").OrderBy(i => i.Date).ToPagedList(page ?? 1,15));
}
int pageSize = 15;
int pageNumber = (page ?? 1);
pageNumber = page == null ? (ViewBag.pageData == null ? 1 : (int)ViewBag.pageData) : page.Value;
ViewBag.pageData = page;
return View(db.PurchaseOrders.OrderBy(i => i.DateOrdered).ToPagedList(pageNumber, pageSize));
}
//获取:PurchaseOrder
公共操作结果索引(字符串搜索依据、字符串搜索、整数页)
{
if(searchBy==“请求者”)
{
返回视图(db.PurchaseOrders.Where(x=>x.Requestor.ToUpper().Contains(search)).OrderBy(i=>i.DateOrdered).ToPagedList(第1、15页));
}
else if(searchBy==“供应商”)
{
返回视图(db.PurchaseOrders.Where(x=>x.Vendor.ToUpper().Contains(search)).OrderBy(i=>i.DateOrdered).ToPagedList(第1,15页));
}
else if(searchBy==“工作顺序”)
{
返回视图(db.PurchaseOrders.Where(x=>x.PurchaseRequest_uz.ToUpper().Contains(search)).OrderBy(i=>i.DateOrdered).ToPagedList(第1页,第15页));
}
else if(searchBy==“dateSearchBegin”)
{
返回视图(db.PurchaseOrders.Where(x=>x.Date>“dateSearchBegin”和&x.Date<“dateSearchEnd”).OrderBy(i=>i.Date.ToPagedList(第1,15页));
}
else if(searchBy==“dateSearchEnd”)
{
返回视图(db.PurchaseOrders.Where(x=>x.Date>“dateOrderedBegin”和&x.Date<“dateOrderedEnd”).OrderBy(i=>i.Date.ToPagedList(第1,15页));
}
int pageSize=15;
整数页码=(第1页);
pageNumber=page==null?(ViewBag.pageData==null?1:(int)ViewBag.pageData):page.Value;
ViewBag.pageData=页面;
返回视图(db.PurchaseOrders.OrderBy(i=>i.DateOrdered).ToPagedList(pageNumber,pageSize));
}
我收到一条错误消息,其中指出“operator”您需要从查询(
字符串搜索
)构造日期时间
对象,然后在linq查询中使用它
var dtFrom = DateTime.Parse(search)
var dtTo ...
return View(db.PurchaseOrders.Where(x => x.Date > dtFrom && x.Date < dtTo).OrderBy(i => i.Date).ToPagedList(page ?? 1,15));
等
然后再回来
filtered.ToPagedList()
您正在将
DateTime
对象与string
x.Date>“dateSearchBegin”进行比较“
您正在比较类型DateTime
和string
,这两种类型无效或不符合逻辑。如何将视图中的文本框设置为等于dtFrom变量?search是一个空字符串值您可以将模型与数据一起发送到视图,模型将包含所有用于搜索的字段。”
filtered.ToPagedList()