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常识就是这里所需要的全部证据。.看问题,看贴出的答案,告诉我所有答案都是错误的。.哈哈
我认为不是