C# 登录错误";无法隐式地将void转换为string";
我有一个带有以下代码的登录页面: 程序:C# 登录错误";无法隐式地将void转换为string";,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个带有以下代码的登录页面: 程序: ALTER PROCEDURE [dbo].[Login_Validation] @email varchar(100), @password varchar(50) AS BEGIN DECLARE @cnt INTEGER SET @cnt = (SELECT COUNT(*) FROM SUBSCRIBER_MASTER WHERE EmailId=@email AND [Password]=@password AND [Status]='Y
ALTER PROCEDURE [dbo].[Login_Validation]
@email varchar(100),
@password varchar(50)
AS
BEGIN
DECLARE @cnt INTEGER
SET @cnt = (SELECT COUNT(*) FROM SUBSCRIBER_MASTER WHERE EmailId=@email AND [Password]=@password AND [Status]='Y')
END
类文件:
public void Login_Validation(string email, string password)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
try
{
LocalConnection_Class(con);
SqlCommand cmd = new SqlCommand("Login_Validation", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar, 100)).Value = email;
cmd.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar, 50)).Value = password;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
}
cmd.Dispose();
con.Close();
}
catch (Exception)
{ }
}
cs文件:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string login = obj.Login_Validation(txtEmail.Text, txtPassword.Text);
}
我不明白如何解决这个错误。有人能帮我吗?
它给了我一个错误:“无法在obj.Login\u验证中将隐式void转换为字符串”。您将函数声明为void,
public void Login\u Validation
,并试图从中分配字符串
这是行不通的,错误信息非常清楚
将方法签名更改为返回字符串,并添加带有存储过程中相关数据的返回语句
编辑-实际上,您的存储过程似乎没有返回任何内容。从那里开始!
可能是一个输出参数
ALTER PROCEDURE [dbo].[Login_Validation]
@email varchar(100),
@password varchar(50),
@isValid bit outbit
AS
BEGIN
SET @isValid = EXISTS(SELECT * FROM SUBSCRIBER_MASTER WHERE EmailId=@email AND [Password]=@password AND [Status]='Y')
END
您的登录验证不会返回任何内容。它返回一个“void” 如果希望它返回某些内容,请将签名更改为返回字符串
public string Login_Validation
然后返回您想要的任何内容。尝试使用SqlDataReader而不是void
public SqlDataReader Login_Validation(string email, string password)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
LocalConnection_Class(con);
SqlCommand cmd = new SqlCommand("Login_Validation", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar, 100)).Value = email;
cmd.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar, 50)).Value = password;
SqlDataReader dr = cmd.ExecuteReader();
cmd.Dispose();
con.Close();
return dr ;
}
往这边叫
protected void btnSubmit_Click(object sender, EventArgs e)
{
SqlDataReader login = obj.Login_Validation(txtEmail.Text, txtPassword.Text);
if(login.HasRows)
{
//Login Successfully
}
else
{
//Login Failed
}
}
就像DJ KRAZE告诉你的 您的
stringlogin=obj.login\u验证(txtmail.Text、txtPassword.Text)
建议您的方法登录验证
将返回一个字符串,因此您需要做两件事
首先更改方法标题
public void登录验证(字符串电子邮件、字符串密码)
to公共字符串登录\u验证(字符串电子邮件、字符串密码)
Secound
现在您需要在方法中添加一个return
比如说
public string Login_Validation(string email, string password)
{
//...
try
{
//...
return //<- your string if succeed
}
catch (Exception)
{
return //<- your string if an error occurs
}
// or you place just one return here
}
公共字符串登录\u验证(字符串电子邮件、字符串密码)
{
//...
尝试
{
//...
return//这是一个直截了当的错误。.您需要更改该方法签名,使其具有返回以及返回类型string
`请说明该存储过程返回的内容您在条件检查中缺少代码,或者在条件检查之后您希望返回什么登录验证
ak本身。@asawyer常识就是这里所需要的全部证据。.看问题,看贴出的答案,告诉我所有答案都是错误的。.哈哈我认为不是