在上一篇當中講解詳細的程式碼,這篇我們把所將所有串接起來:
View
在login當中
<form action="@Url.Action("DoLogin","Home")" method="post">
<div class="form-group">
<label for="Account">Username:</label>
<input type="text" id="Account" name="Account" class="form-control" required>
</div>
<div class="form-group">
<label for="Password">Password:</label>
<input type="password" id="Password" name="Password" class="form-control" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
Controller
在連接字串中要將星號改成自己的使用者密碼
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult login()
{
return View();
}
public ActionResult DoLogin(loginfo info)
{
//與資料庫連接
string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;User ID=TEST03;Password=*****;Encrypt=False";
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
//下SQL語法
SqlCommand cmd = new SqlCommand("select * from Login where Account=@Account and Password=@Password");
cmd.Connection = conn;
//填入參數(使用者輸入的帳號密碼)
cmd.Parameters.AddWithValue("@account", info.Account);
cmd.Parameters.AddWithValue("@Password", info.Password);
//執行SQL語法來查詢是否有這組帳密
SqlDataAdapter adpt = new SqlDataAdapter();
DataSet ds = new DataSet();
adpt.SelectCommand = cmd;
adpt.Fill(ds);
//如果有就跳轉到首頁
if (ds.Tables[0].Rows.Count > 0)
{
return RedirectToAction("Index");
}
else
{
return RedirectToAction("login");
}
}
}
Model
public class loginfo
{
public string Account { get; set; }
public string Password { get; set; }
};
之後我們在SQL server當中創建一個table並插入一行資料
--創建一個table
create table Login
(
Account nvarchar(50),
Password nvarchar(50)
)
--新增一行資料
insert into Login values('jack123','1234');
實測:
我們的程式邏輯是假如帳號密碼是正確的則跳到Index頁面,否則會留在原本頁面並且帳號密碼清空
假設我們帳號密碼輸入正確:
按下Login後:
這樣就代表成功
假設輸入錯誤的帳號密碼:
這樣就代表成功
總結:
我們輸入帳號密碼以後會去拿去資料庫比對是否有這組帳號密碼,從而判定要做出哪個操作,最容易有問題的會是在與資料庫連接的部分,其中sql語法中的參數大小寫一定要與sql server中的欄位符合,因此如果失敗的話可以多去看看在SQL server的語法是否有誤。