如何检查 Blazor (C#) 中是否存在公司?

时间:2021-07-06 10:50:45

标签: c# html css razor blazor

我正在 Blazor (C#) 服务器端做一个应用程序。如何检查 Register.razor 文件中是否存在公司?公司验证应在用户点击注册按钮时进行。

我尝试添加的函数写在这个文件中。

注册.razor:

@page "/register"

@using TestBlazor.Models
@using TestBlazor.Data
@using Microsoft.Data.SqlClient


<br />
<br />

<h3 class="h3"><b>Register</b></h3>
<br />

<EditForm class="needs-validation" Model="@_user" OnValidSubmit="@HandleValidSubmit" OnInvalidSubmit="@HandleInvalidSubmit">
    <div class="alert @StatusClass">@StatusMessage</div>
    <DataAnnotationsValidator />
    <ValidationSummary />
    <div class="form-group">
        <p><b>User name</b></p>
        <input id="username" class="solid" name="username" placeholder="Your username.." @bind-value="_user.UserName" />
        <ValidationMessage For="@(() => @_user.UserName)"></ValidationMessage>
    </div>
    <div class="form-group">
        <p><b>Password</b></p>
        <input type="password" class="solid" id="password" placeholder="Your password.." @bind-value="_user.Password" />
        <ValidationMessage For="@(() => @_user.Password)"></ValidationMessage>
    </div>
    <div class="form-group">
        <p><b>Email</b></p>
        <input id="email" class="solid" placeholder="you@example.com" @bind-value="_user.Email" />
        <ValidationMessage For="@(() => @_user.Email)"></ValidationMessage>
    </div>
    <div class="form-group">
        <p><b>Company</b></p>
        <input id="company" class="solid" placeholder="Your company.." @bind-value="_user.Company" />
        <ValidationMessage For="@(() => @_user.Company)"></ValidationMessage>
    </div>


    <br />

    <button disabled="@loading" class="btn btn-primary" onclick="AddUser">

        @if (loading)
        {
            <span class="spinner-border spinner-border-sm mr-1"></span>
            <NavLink href="/login" class="btn btn-link">Register</NavLink>
        }
        Register
    </button>
    <NavLink href="/login" class="btn btn-link">Login</NavLink>
</EditForm>



@code {
    private User _user = new User();


    private string StatusMessage;
    private string StatusClass;

    private bool loading;


    private void OnValidSubmit()
    {
        if (loading == true)
        {
            Console.WriteLine("You have successfully registered!");
        }

        else
        {
            loading = false;
            Console.WriteLine("Check your information again!");
        }
    }

    //protected void HandleValidSubmit()
    //{
    //    StatusClass = "alert-info";
    //    StatusMessage = " You have successfully registered! Please click the Login button to log in!";

    @*}*@


private async void HandleValidSubmit()
{
    try
    {
        var _dataContext = new AppDbContext();
        _dataContext.User.Add(_user);

        await _dataContext.SaveChangesAsync();
    }
    catch
    {
        base.StateHasChanged();
    }
    _user = new User();
    //obavještava komponentu da se njezino stanje promijenilo
    base.StateHasChanged();
}


protected void HandleInvalidSubmit()
{
    StatusClass = "alert-danger";
    StatusMessage = " Check your information again!";
}


private Boolean exists(string company)
{
    SqlConnection conn = new SqlConnection("Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;");
    SqlCommand cmd = new SqlCommand("Select Count(*)  from Users where Company ='" + company + "'", conn);
    SqlDataReader sReader = null;
    Int32 numberOfRows = 0;

    try
    {
        conn.Open();
        sReader = cmd.ExecuteReader();

        while (sReader.Read())
        {
            if (!(sReader.IsDBNull(0)))
            {
                numberOfRows = Convert.ToInt32(sReader[0]);
                if (numberOfRows > 0)
                {
                    return true;
                }
            }
        }
    }
    catch (Exception ex)
    {

        throw ex;
    }
    finally
    {
        conn.Close();
    }
    return false;
}


public void IfCompanyExist()
{
    var _dataContext = new AppDbContext();
    bool companyAlreadyExists = _dataContext.User.Any(x => x.Company == _user.Company);
}


public bool CheckCompany(string company)
{
    using (SqlConnection con = new SqlConnection())
    {
        con.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;";
        con.Open();
        using (SqlCommand cmd = new SqlCommand("select * from Users where Company = company", con))
        {
            SqlParameter param = new SqlParameter();
            param.ParameterName = "company";
            param.Value = company;
            cmd.Parameters.Add(param);
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
                return true;
            else
                return false;
        }
    }
}


public void IsCheckCompany(string Company)
{

    using (var context = new AppDbContext())
    {
        _user = context.User.Where(a => a.Company.ToLower() == Company.ToLower()).FirstOrDefault();
    }


    bool status;
    if (_user != null)
    {
        //Already registered
        status = false;
    }
    else
    {
        //Available to use
        status = true;
    }

}
}

我尝试了以下功能:

public void IsCheckCompany(string Company)
{

    using (var context = new AppDbContext())
    {
        _user = context.User.Where(a => a.Company.ToLower() == Company.ToLower()).FirstOrDefault();
    }


    bool status;
    if (_user != null)
    {
        //Already registered
        status = false;
    }
    else
    {
        //Available to use
        status = true;
    }

}


public bool CheckCompany(string company)
{
    using (SqlConnection con = new SqlConnection())
    {
        con.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;";
        con.Open();
        using (SqlCommand cmd = new SqlCommand("select * from Users where Company = company", con))
        {
            SqlParameter param = new SqlParameter();
            param.ParameterName = "company";
            param.Value = company;
            cmd.Parameters.Add(param);
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
                return true;
            else
                return false;
        }
    }
}

private Boolean exists(string company)
{
    SqlConnection conn = new SqlConnection("Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;");
    SqlCommand cmd = new SqlCommand("Select Count(*)  from Users where Company ='" + company + "'", conn);
    SqlDataReader sReader = null;
    Int32 numberOfRows = 0;

    try
    {
        conn.Open();
        sReader = cmd.ExecuteReader();

        while (sReader.Read())
        {
            if (!(sReader.IsDBNull(0)))
            {
                numberOfRows = Convert.ToInt32(sReader[0]);
                if (numberOfRows > 0)
                {
                    return true;
                }
            }
        }
    }
    catch (Exception ex)
    {

        throw ex;
    }
    finally
    {
        conn.Close();
    }
    return false;
}

我应该如何调用带参数的函数?我做错了什么?

0 个答案:

没有答案