我网站上的登录验证基于三个参数,其中一个参数是出生日期。向用户提供DatePicker
以选择日期。日期保存在数据库中的格式为MM / dd / yyyy。
当检查身份验证时,Linq查询没有返回任何结果,因为数据库中的记录是MM / dd / yyyy,从视图传递到控制器的值是dd / mm / yyyy.Hence我没有得到任何输出。
以下是我在控制器中所做的事情的代码。
[HttpPost]
public ActionResult Login(LoginTable log)
{
var login = from a in db.LoginTables
where a.DOB== log.DOB
select a;
}
我也试过
var login = from a in db.LoginTables
where a.DOB== log.DOB.toString("MM/dd/yyyy")
select a;
但是给出错误(No Overload方法'ToString()'需要1个参数)
我该怎么办?
答案 0 :(得分:2)
这是失败的原因是因为LINQ被翻译成SQL语法,并且在SQL中没有等效的ToString
。
鉴于log
是您方法的参数,为什么不能简单地使用:
[HttpPost]
public ActionResult Login(LoginTable log)
{
string DOBString = log.DOB.ToString("MM/dd/yyyy");
var login = from a in db.LoginTables
where a.DOB == DOBString
select a;
}