创建的类没有出现在其他类文件asp.net/visual basic中

时间:2016-11-13 16:24:35

标签: asp.net visual-studio

非常基本的解释:我在ConnectionClass.cs文件中创建了一个“用户”类,需要在别处使用它(见下文,它是一个登录按钮)。

我想输入的代码是:`

   namespace Vehicle_Website.Pages.Account

{

    public partial class Login : System.Web.UI.Page
    {      
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {


            User user = ConnectionClass.LoginUser(txtLogin.Text, txtPassword.Text);

            if (user != null)
            {
                //Store login variables to session
                Session["login"] = user.Name;
                Session["type"] = user.Type;

                Response.Redirect("~/Pages/Home.aspx");
            }
            else
            {
                lblError.Text = "Login Failed";
            }
        }
    }
}`

如果您愿意,“用户”应突出显示为“蓝色”,并认识到它是已在其他地方创建的类,除非是,并且我收到错误

  

“类型或名称空间”无法找到用户“

完全相同的情况适用于“ConnectionClass”行。它应该突出显示但是再说不认可。

我在其他地方创建了public class Userpublic static User LoginUser(string login, string password),它们可以正常工作而不会出错。我不明白为什么,用简单的英语,“User”和“ConnectionClass”这两个词并不是“突出/改变颜色”并被识别。

我已尝试更改属性以进行编译,但似乎没有做任何事情。

无论您需要什么其他信息,我都乐意与您分享。

UPDATE ***

这是我的ConnectionClass.cs文件(工作正常):

namespace Vehicle_Website.App_Code
{
    public static class ConnectionClass
    {
        private static SqlConnection conn;
        private static SqlCommand command;


        static ConnectionClass()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["DataConnection"].ToString();
            conn = new SqlConnection(connectionString);
            command = new SqlCommand("", conn);

        }

        public static User LoginUser(string login, string password)
        {
            //Check if user exists
            string query = string.Format("SELECT COUNT (*) FROM WebsiteDB.dbo.users WHERE name = '{0}'", login);
            command.CommandText = query;
            try
            {
                conn.Open();
                int amountOfUsers = (int)command.ExecuteScalar();

                if(amountOfUsers == 1)
                {
                    //User exists, check if passwords match
                    query = string.Format("SELECT password FROM users WHERE name = '{0}'", login);
                    command.CommandText = query;
                    string dbPassword = command.ExecuteScalar().ToString();

                    if(dbPassword == password)
                        {
                        //Passwords match, retrieve further information.
                        query = string.Format("SELECT email, user_type FROM users WHERE name = '{0}'", login);
                        command.CommandText = query;

                        SqlDataReader reader = command.ExecuteReader();
                        User user = null;
                        while (reader.Read())
                        {
                            string email = reader.GetString(0);
                            string type = reader.GetString(1);

                            user = new User(login, password, email, type);
                        }
                        return user;
                        }
                    else
                    {
                        //Passwords do not match.
                        return null; 
                    }
                }
                else
                {
                    //User exists
                    return null;
                }
            }
            finally
            {
                conn.Close();
            }
        }

    }
}

更新

所以我想我可能已经找到了问题但不知道如何修复:

基本上我的login.aspx.cs页面没有“链接”到我的ConnectionClass.cs

我的意思是,我在login.aspx.cs页面上创建了以下行:

 Session["login"] = user.Name;

当我尝试在我的ConnectionClass.cs文件上使用".Name"时,它无法识别: user.Name);

关于如何确保两个页面都在进行通信的任何想法?我已经尝试纠正命名空间,因此它们都没有运气匹配...

3 个答案:

答案 0 :(得分:0)

您是否在与登录按钮相同的项目中安装了ConnectionClass?如果不是,则必须添加对包含ConnectionClass的项目的引用。

另外,你的ConnectionClass是静态的吗?如果不是这样的话,如果没有首先创建一个像这样的类的实例,你将无法使用它:

$(function() {
    var form = $('#editRes'); // this is a jQuery object 
    var formMessages = $('#formMsg'); // this is also a jQuery object

    // Set up an event listener for the contact form.
    form.submit(function (e) {
        // Stop the browser from submitting the form.
        e.preventDefault();
        // do the validation here
        if (!validateLog()) {
            return;
        }
        // Submit the form using AJAX.
        $.ajax({
            type: 'POST',
            url: window.location.href,
            data: form.serialize()
        }).done(function(response) {
            // Make sure that the formMessages div has the 'success' class.
            formMessages.removeClass('error').addClass('success');
            // Set the message text.
            formMessages.html(response); // < html();
            // Clear the form.
            $('').val('')
        }).fail(function(data) {
            // Make sure that the formMessages div has the 'error' class.
            formMessages.removeClass('success').addClass('error');
            // Set the message text.
            var messageHtml = data.responseText !== '' ? data.responseText : 'Oops! An error occured!.';
            formMessages.html(messageHtml); // < html()
        });
    });

    function validateLog() {
        var valid = true;
        //VALIDATE HERE
        return valid;
    }
});

答案 1 :(得分:0)

您必须使用该课程的全名。当访问嵌套类时,这就是ConnectedClass.User。默认情况下,嵌套类是私有的,因此也要确保使用正确的访问修饰符

答案 2 :(得分:0)

  1. 请参阅包含名称空间 Vehicle_Website.App_Code aspx.cs 中,其中包含按钮点击方法
  2. 清楚地看到这一行

    public static class ConnectionClass
    

    根据代码,它是一个静态类,也可以看到这个构造函数!

    static ConnectionClass()
    {
        string connectionString = ConfigurationManager.ConnectionStrings["DataConnection"].ToString();
        conn = new SqlConnection(connectionString);
        command = new SqlCommand("", conn);
    
    }
    

    在实例化对象期间何时调用构造函数。是     它可以实现ConnectionClass吗?根据OOPs     编程概念,你不能这样做。然后如何连接     字符串和命令将被分配!!

    首先尝试修复此问题。