啰嗦:今天面试,遇到这个上级测试,很容易的,因为一个错误,居然最后没做出来,心累
回到家,1小时做完,我特么还加了密,我还验证,可是上天不给我一次重来的机会啊
很垃圾的,小白可以看看,大神可以轻喷
首先第一个问题就是:数据库字段的设计
nvarchar 与 varchar的区别
nvarhar:添加字段,自动用空格补齐后面的空余
varvhar:无空格
问题出现的原因:登陆判断时,输入文本框的值和数据库一样却报错,发现原来是有空格
最简单的数据库表设计
然后就是添加sql帮助类库
model代码:model有输入验证记得在model类库引用 using System.ComponentModel.DataAnnotations;
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.ComponentModel.DataAnnotations;usingSystem.Linq;usingSystem.Web;namespaceModel
{public classUserModel
{
[DisplayName("用户名")]
[Required(ErrorMessage= "必填")]public string UserName { get; set; }
[DisplayName("密码")]
[Required(ErrorMessage= "必填")]
[StringLength(20, MinimumLength = 6, ErrorMessage = "密码长度必须在{2} 和{1}个字符")]
[DataType(DataType.Password)]public string UserPwd { get;set; }public string ConfirmPassword { get; set; }public string Message { get; set; }
}
}
model代码
usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingYL.MySQL;namespaceDAL
{public classUserDAL
{//注册
public bool regst(string UserName, stringUserPwd)
{
StringBuilder sql=newStringBuilder();
sql.Append("INSERT INTO Users (UserName,UserPwd) VALUES (@UserName,@UserPwd)");
SqlParameter[] sqlparmeter={new SqlParameter("@UserName",SqlDbType.NVarChar,50),new SqlParameter("@UserPwd",SqlDbType.NVarChar,50)
};
sqlparmeter[0].Value =UserName;
sqlparmeter[1].Value =UserPwd;var result = new MySqlAdoProvide().ExecuteNonQuery(MySqlHelper.connectionStringManager, sql.ToString(), sqlparmeter) > 0;returnresult;
}//登陆
public Model.UserModel GetLogin(stringUserName)
{
StringBuilder strSql= newStringBuilder();
strSql.Append("select UserName,UserPwd");
strSql.Append("from Users");
strSql.Append("where UserName=@UserName");
SqlParameter[] parameters={new SqlParameter("@UserName", SqlDbType.NVarChar,50)
};
parameters[0].Value =UserName;var data = new MySqlAdoProvide().ExecuteReader(dr => dr.GetEntity(), MySqlHelper.connectionStringManager, strSql.ToString(), parameters).FirstOrDefault();returndata;
}
}
}
DAL代码
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceBLL
{public classUserBLL
{//构造函数
privateDAL.UserDAL dal;publicUserBLL()
{
dal= newDAL.UserDAL();
}//注册
public bool regst(string UserName, stringUserPwd)
{returndal.regst(UserName, UserPwd);
}public Model.UserModel GetLogin(stringUserName)
{returndal.GetLogin(UserName);
}
}
}
BLL代码
MvcApplication8-HomeController代码
控制器代码
@model Model.UserModel
@{
ViewBag.Title= "Index";
}
登陆界面
{
@Html.ValidationMessageFor(m=>m.UserName)
@Html.TextBoxFor(m=> m.UserPwd, new { @class = "form-control", @placeholder = "密码"})
@Html.ValidationMessageFor(m=>m.UserPwd)登陆@Html.ValidationMessageFor(m=>m.Message)注册一个新账号
登陆界面代码
@model Model.UserModel
@{
ViewBag.Title= "Index";
}
注册界面
{
@Html.ValidationMessageFor(m=>m.UserName)
@Html.TextBoxFor(m=> m.UserPwd, new { @placeholder = "密码"})
@Html.ValidationMessageFor(m=>m.UserPwd)
@Html.TextBoxFor(m=> m.ConfirmPassword, new { @placeholder="确认密码"})
@Html.ValidationMessageFor(m=>m.ConfirmPassword)
@Html.ValidationMessageFor(m=>m.Message)注册
注册界面代码