iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Modern Web

從零開始使用Microsoft MVC架構來搭建web server系列 第 24

DAY 24 實作案例_註冊的程式碼詳解

  • 分享至 

  • xImage
  •  

View
這邊要注意的是form標籤
1.action屬性裏頭的Url.Action("Doregister", "Home")代表的意思是將參數傳送至HomeController的Doregister
2.imput屬性中的name="Account"、name="Password",其中這兩個的名稱對應到的是Controller中的public ActionResult Doregister(string Account,string Password),一定要完全相同,不然會接收不到。
3.在最底下的div標籤是用來顯示錯誤訊息用的,TempData[""]也是用於前後端接收訊息使用的方式

@{
    ViewBag.Title = "Register";
}

<h2>Register</h2>
<form action="@Url.Action("Doregister", "Home")" method="post">
    <div class="form-group">
        <label for="Account">Account</label>
        <!--帳號輸入框-->
        <input type="text" class="form-control" id="Account" name="Account" placeholder="Enter your account" required />
    </div>
<!--密碼輸入框-->
    <div class="form-group">
        <label for="Password">Password</label>
        <input type="password" class="form-control" id="Password" name="Password" placeholder="Enter your password" required />
    </div>

    <button type="submit" class="btn btn-primary">Register</button>
</form>
<div style="color: red; margin-top: 10px;">@TempData["Errmsg"]</div>
                </div>

Controller
1.public ActionResult Doregister(string Account,string Password)用來接收view傳過來的參數
2."select Account from Login where Account=@Account"這句SQL語法的意思是在Login這張表當中查詢Account欄位,但只需要Account=@Account與我輸入的值相同的就行
3. cmd.Parameters.AddWithValue("@Account", Account);輸入的值就是在view中接收到的值
4. if有查詢到就代表此帳號已存在,則使用TempData傳送警示訊息並重新刷新頁面
5. 如果沒有這組帳號則insert into使用者輸入的這組帳號密碼,最後使用 ins.ExecuteNonQuery();來執行語法

//需要兩個參數:帳號、密碼
public ActionResult Doregister(string Account,string Password)
{
//資料庫連接字串
    string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;User ID=TEST03;Password=1qaz@WSX;Encrypt=False";
    SqlConnection conn = new SqlConnection(connstr);
    conn.Open();
    //抓取帳號欄位,條件設置為如果有某筆資料的帳號=輸入的帳號
    SqlCommand cmd = new SqlCommand("select Account from Login where Account=@Account");
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("@Account", Account);
    SqlDataAdapter adpt = new SqlDataAdapter();
    DataSet ds = new DataSet();
    adpt.SelectCommand = cmd;
    adpt.Fill(ds);
//如果有有資料則代表帳號有人使用過了
    if (ds.Tables[0].Rows.Count > 0)
    {
        TempData["Errmsg"] = "帳號已存在";
        return RedirectToAction("Register");
    }
    //若沒有則創建這組帳號密碼
    else
    {
    //在資料庫中INSERT這組帳號密碼
        SqlCommand ins = new SqlCommand("INSERT INTO Login (Account, Password) VALUES (@Account, @Password)");
        ins.Parameters.AddWithValue("@Account", Account);
        ins.Parameters.AddWithValue("@Password",Password);
        ins.Connection = conn;
        ins.ExecuteNonQuery();

    }
    return RedirectToAction("login");

}

測試
輸入已存在的帳號密碼然後按下送出
https://ithelp.ithome.com.tw/upload/images/20241006/20168332efNPRwq091.png
以及註冊新的帳號密碼
https://ithelp.ithome.com.tw/upload/images/20241006/20168332V1CW69nrqg.png
在資料庫中查看是否有創建成功
https://ithelp.ithome.com.tw/upload/images/20241006/20168332VGjs8sGJNv.png


上一篇
DAY 23 實作案例_註冊
下一篇
DAY 25 實作案例_忘記密碼
系列文
從零開始使用Microsoft MVC架構來搭建web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言