GridView 點下編輯按鈕後 到編輯頁面 進行資料更新
在 Controller 建立兩個方法
第一個方法程式碼如下
public ActionResult Edit(string id) //主要用於帶出資料
{
string sql = $"select * from Employee where id ={id}";
DBHelper db = new DBHelper();
SqlDataReader sqlDataReader = db.GetSqlDataReader(sql);
List<Employee> employee = new List<Employee>();
while (sqlDataReader.Read())
{
employee.Add (new Employee
{
id = sqlDataReader.GetInt32(0),
LoginID = sqlDataReader.GetString(1),
Username = sqlDataReader.GetString(2),
Gender = sqlDataReader.GetString(3),
PhoneNumber = sqlDataReader.GetString(4)
});
}
sqlDataReader.Close();
return View(employee.FirstOrDefault());
}
程式碼簡單說明
ActionResult Edit(string id):這是一個 Action 方法,它接受一個名為 id 的參數,
該參數用於指定要編輯的 Employee 記錄的唯一識別符。
在路由中,通常會將此參數作為路由的一部分,例如 /Employee/Edit/1,其中 1 是要編輯的 Employee 的 id。
string sql = $"select * from Employee where id ={id}";:這行代碼構建了一個 SQL 查詢字串,
用於選擇具有特定 id 的 Employee 記錄。
$ 字串插值允許您在字串中嵌入變數值,這裡的 id 變數是由方法的參數傳入的。
List employee = new List();:在這裡創建了一個空的 Employee 列表,用於存儲查詢結果。
employee.Add(new Employee { /* ... */ });:在循環內部,為每一行創建一個新的 Employee 對象,然後將該對象添加到 employee 列表中。
return View(employee.FirstOrDefault());:最後,這個方法將 Employee 列表中的第一個元素(即具有指定 id 的 Employee 記錄)傳遞給Views,並返回頁面
第二個方法程式碼如下
[HttpPost]
public ActionResult Save(Employee Employee)
{
int count = 0;
if (ModelState.IsValid)
{
string sql = $"update Employee Set [username] = '{Employee.Username }', [phone_number] = '{Employee.PhoneNumber }',[gender]='{Employee.Gender}' where id = {Employee.id}";
DBHelper db = new DBHelper();
count = db.ExecuteNonQuery(sql);
}
if (count > 0)
{
return RedirectToAction("Index");
}
return View(Employee);
}
程式碼說明如下
[HttpPost] 屬性:這個屬性指示這是一個 HTTP POST 請求的 Action 方法,處理由表單提交的數據。
ActionResult Save(Employee Employee):這是 Action 方法的簽名,它接受一個名為 Employee 的參數,該參數封裝了從編輯表單提交的 Employee 記錄的數據。
return RedirectToAction("Index");:如果更新成功,則重定向到名為 "Index" 的 Action 方法。以顯示更新後的結果。
Edit.cshtml 程式如下
@using (Html.BeginForm("Save", "Employee", FormMethod.Post))
{
<div class="form-group">
@Html.Hidden("Id", Model.id)
</div>
<div class="form-group">
@Html.LabelFor(model => model.LoginID, "帳號")
@Html.DisplayFor(model => model.LoginID)
</div>
<div class="form-group">
@Html.LabelFor(model => model.Username, "使用者名稱")
@Html.TextBoxFor(model => model.Username, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.Label("性別")
@Html.RadioButtonFor(model => model.Gender, "M") <span>男</span>
@Html.RadioButtonFor(model => model.Gender, "F") <span>女</span>
</div>
<div class="form-group">
@Html.LabelFor(model => model.PhoneNumber, "電話號碼")
@Html.TextBoxFor(model => model.PhoneNumber, new { @class = "form-control" })
</div>
<div class="form-group">
<input type="submit" value="儲存" class="btn btn-primary" />
</div>
}
執行畫面如下
點擊編輯後
輸入完資料按下儲存 返回清單頁