我需要帮助为我的网站创建登录页面
@{
var db = Database.Open("database");
Validation.RequireField("Email","Required Field - Email");
Validation.RequireField("Password","Required Field - Password");
string Email = Request.Form["Email"];
string Password = Request.Form["Password"];
if (IsPost && Validation.IsValid()){
if(ModelState.IsValid){
var selectQueryString = "SELECT * FROM Members WHERE Email= @0 and Password @1";
var result = db.Query(selectQueryString, Email, Password);
int count = result.Count();
if (count == 1){
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
foreach (var row in db.Query(result)){
Session["FirstName"]=row.FirstName;
Session["LastName"]=row.LastName;
Session["Email"]=row.Email;
Session["Telephone"]=row.telephone;
}
Response.Redirect("~/Home.cshtml");
}
else
{
<p>Invalid Username or Password</p>
<a href="~/"></a>
}
}
}}
在第19行(foreach部分),我收到以下错误:
错误CS1502:'WebMatrix.Data.Database.Query(string,params object [])'的最佳重载方法匹配有一些无效的参数
错误CS1503:参数1:无法从'System.Collections.Generic.IEnumerable'转换为'string'
我做了一些挖掘,但似乎无法找到任何想法?
答案 0 :(得分:1)
db.Query会返回IEnumerable
。
来自result
的{{1}}是IEnumerable。
由于结果已经是var result = db.Query(selectQueryString, Email, Password)
,因此您不必再次致电IEnumerable
。相反,您可以在foreach循环中迭代结果。
db.Query
答案 1 :(得分:0)
您将总共三个参数/参数传递给Query()方法:
但是,最接近的匹配只需要两个参数:
另外,我注意到您的查询容易受到SQL注入攻击。您将要清理表单中的输入。