第一张桌卡:CardId, Description
。 - 保留所有可用卡的记录Second Table RegistartionDt:RegistartionDtId, RegisteredDateTime , CardId
。保留使用特定卡的时间和数据数据。
我想制作一个搜索功能,按日期搜索卡片。例如,用户将从下拉菜单中选择日期。开始日期和结束日期,并搜索该范围内使用的卡片。
到目前为止,我有这个:
public ActionResult List ()
{
CardDBEntities _db = new CardDBEntities();
var cards = (from c in _db.Cards
join d in _db.RegistrationDTs
on c.CardId equals d.CardId
where d.RegistrationDateTime >= startDate &&
d.RegistrationDateTime <= endDate
select new
{
d.CardId,
c.Description
}).OrderByAscending(x => x.RegistrationDateTime)
.ToList();;
return View(cards);
}
我应该在视图中做些什么?如何显示我的结果?应如何定义endDate和startDate我没有在任何地方定义它们。我希望enddate和startdate是用户将在搜索框中插入的值。
请帮助。 谢谢
答案 0 :(得分:2)
您可以尝试这样的事情:
// Declare a model class in your models folder, like below
// You could give any name you want to this class
public class ModelName
{
public int CardId { get; set; }
public string Description { get; set; }
public DateTime RegistrationDateTime { get; set; }
}
然后在您的控制器中,您可以将您的方法重构为以下方法:
public ActionResult List (DateTime startDate, DateTime endDate)
{
using(var db = new CardDBEntities())
{
var cards = (from c in db.Cards
join d in db.RegistrationDTs
on c.CardId equals d.CardId
where d.RegistrationDateTime >= startDate &&
d.RegistrationDateTime <= endDate
select new ModelName
{
CardId = d.CardId,
Description = c.Description,
RegistrationDateTime = d.RegistrationDateTime
}).OrderByAscending(x => x.RegistrationDateTime)
.ToList();
ViewData["cards"] = cards;
return View();
}
}
如何定义endDate和startDate我没有定义它们 任何地方。
您可以在ActionResult
方法中将它们定义为参数。
我应该在视图中做些什么?
您可以阅读ViewBag
集合中的数据。
我应该在视图中做些什么?
这完全取决于你如何呈现你的结果。