Chúng ta đã tìm hiểu về cách tạo view cho chức năng xem danh sách sinh viên trong phần trước. Trong phần này, chúng ta sẽ tạo view cho chức năng chỉnh sửa thông tin sinh viên.
Người dùng có thể cập nhật thông tin sinh viên bằng cách sử dụng chức năng Edit như hình sau.
View cập nhật thông tin sinh viên sẽ được hiển thị khi bạn nhấp vào nút Edit trong view danh sách sinh viên (Index). Hình dưới đây mô tả đầy đủ các bước chỉnh sửa thông tin sinh viên.
Hình trên minh họa các bước sau.
1. Người dùng nhấp vào liên kết Edit trong view Index sẽ gửi yêu cầu HTTP GET có URL là http://localhost/student/edit/{Id} với tham số Id tương ứng trong chuỗi truy vấn. Yêu cầu này sẽ được xử lý bằng phương thức hành động Edit có HttpVerbs là HttpGet.
2. Phương thức hành động Edit này sẽ lấy dữ liệu sinh viên từ cơ sở dữ liệu dựa trên tham số Id được cung cấp và hiển thị view Edit với dữ liệu sinh viên cụ thể đó.
3. Người dùng có thể chỉnh sửa dữ liệu sinh viên và nhấp vào nút Save trong view Edit. Nút Save sẽ gửi một yêu cầu HTTP POST có URL là http://localhost/Student/Edit kèm theo các trường của biểu mẫu chứa dữ liệu sinh viên.
4. Phương thức hành động Edit có HttpVerbs là HttpPost trong StudentController sẽ cập nhật dữ liệu sinh viên vào cơ sở dữ liệu và hiển thị trang Index với dữ liệu được làm mới bằng phương thức RedirectToAction.
Vì vậy, đây sẽ là quá trình hoàn chỉnh để chỉnh sửa dữ liệu bằng cách sử dụng view Edit trong ASP.NET MVC.
Bây giờ chứng ta sẽ bắt đầu thực hiện các bước trên.
Chúng tôi sẽ sử dụng lớp Model Student đơn giản sau đây cho view Edit của chúng tôi.
Bước 1:
Chúng tôi đã tạo view Index trong phần trước bằng cách sử dụng mẫu List đã có sẵn liên kết Edit như được hiển thị trong hình bên dưới.
Một liên kết Edit sẽ gửi yêu cầu HTTP GET đến phương thức hành động Edit của StudentController kèm theo Id tương ứng trong chuỗi truy vấn.
Ví dụ: liên kết Edit với sinh viên John sẽ nối chuỗi truy vấn Id = 1 vào URL của yêu cầu vì sinh viên John có StudentId là 1 trong cơ sở dữ liệu. Tương tự như vậy, tất cả liên kết Edit sẽ có Id tương ứng với từng sinh viên trong chuỗi truy vấn.
Bước 2:
Bây giờ, hãy tạo một phương thức hành động Edit có HttpVerbs là HttpGet trong StudentController (mặc định sẽ là HttpGet nếu không chỉ định HttpVerbs cho phương thức hành động). Khi nhấp vào liên kết Edit trong view Index ở trên sẽ gửi yêu cầu HTTP GET kèm theo tham số Id đến phương thức hành động Edit.
Phương thức hành động Edit() này sẽ thực hiện hai tác vụ. Trước tiên nó sẽ tìm nạp thông tin sinh viên từ cơ sở dữ liệu có StudentId khớp với Id trong chuỗi truy vấn. Thứ hai, nó sẽ hiển thị view Edit với thông tin sinh viên để người dùng có thể cập nhật.
Vì vậy, phương thức hành động Edit() phải có một tham số là Id. ASP.NET MVC sẽ tự động liên kết giá trị Id trong URL của yêu cầu với tham số Id của phương thức hành động Edit.
Như bạn có thể thấy trong phương thức Edit ở trên, chúng tôi đã sử dụng truy vấn LINQ để lấy sinh viên có StudentId khớp với Id được cung cấp từ bộ danh sách sinh viên.
Sau đó chúng tôi đưa đối tượng sinh viên đó vào view Edit. Trong một ứng dụng thực tế, bạn có thể lấy sinh viên từ cơ sở dữ liệu.
Bây giờ, nếu bạn nhấp vào liên kết Edit từ view Index thì bạn sẽ gặp lỗi sau.
Đã xảy ra lỗi ở trên vì chúng tôi chưa tạo view Edit. Theo mặc định, ASP.NET MVC sẽ tìm tệp Edit.cshtml hoặc Edit.vbhtml hoặc Edit.aspx hoặc Edit.ascx trong thư mục Views -> Student hoặc Views -> Shared.
Bước 3:
Để tạo view Edit, bạn nhấp chuột phải vào bên trong phương thức hành động Edit và nhấp vào Add View… Nó sẽ mở hộp thoại Add View.
Trong hộp thoại Add View, giữ nguyên tên view mặc định là Edit. (Bạn cũng có thể thay đổi theo yêu cầu của bạn nhưng bạn phải chỉ định rõ tên view trong phương thức View()
khi trả về.)
Chọn Edit trong danh sách thả xuống Template và cũng chọn Student cho lớp Model class như bên dưới.
Bây giờ, nhấp vào nút Add để tạo view Edit.cshtml trong thư mục Views -> Student. View Edit.cshtml đã có sẵn nội dung như bên dưới.
Xin lưu ý rằng Edit.cshtml có phương thức HtmlHelper là @using (Html.BeginForm())
để tạo phần tử biểu mẫu HTML. Html.BeginForm gửi một yêu cầu HTTP POST theo mặc định.
Bây giờ, chạy lại và nhấp vào liên kết Edit của bất kỳ sinh viên nào trong view Index. View Edit sẽ được hiển thị thông tin sinh viên tương ứng như hình bên dưới.
Bạn có thể chỉnh sửa Tên hoặc Tuổi của Sinh viên và nhấp vào Save. Khi nhấp vào Save, biểu mẫu (form) sẽ gửi một yêu cầu HTTP POST tới phương thức hành động Edit có HttpVerbs là HttpPost.
Sử dụng HTTP POST là vì yêu cầu POST gửi dữ liệu của biểu mẫu như một phần của yêu cầu, nó không gửi dữ liệu biểu mẫu trong chuỗi truy vấn như HTTP GET.
Bước 4:
Bây giờ, hãy viết phương thức hành động Edit có HttpVerbs là HttpPost để lưu dữ liệu sinh viên đã chỉnh sửa.
Như bạn có thể thấy trong đoạn mã trên, phương thức hành động Edit() yêu cầu một đối tượng Student làm tham số đầu vào. ASP.NET MVC sẽ tự động liên kết các trường dữ liệu của biểu mẫu với tham số Student của phương thức hành động Edit(). Vui lòng truy cập phần Model Binding để biết thêm thông tin.
Bây giờ, bạn có thể cập nhật thông tin vào cơ sở dữ liệu và chuyển hướng nó sang phương thức hành động Index. (chúng tôi chưa viết mã để cập nhật cơ sở dữ liệu ở đây cho mục đích demo).
Bây giờ, chạy lại ứng dụng và nhấp vào nút Save trong view Edit. Nó sẽ lưu thông tin cập nhật và chuyển hướng sang phương thức hành động Index().
Theo cách này, bạn có thể tạo chức năng chỉnh sửa thông tin sinh viên bằng cách sử dụng mẫu Edit khi tạo view. Ngoài ra, bạn cũng có thể tạo view Edit mà không cần sử dụng mẫu Edit có sẵn.
Ví dụ sau đây minh họa lớp StudentController với tất cả các phương thức hành động.
Hi i think that i saw you visited my web site thus i came to Return the favore I am attempting to find things to improve my web siteI suppose its ok to use some of your ideas
انجام تمامی خدمات در پیشوا ، ورامین قرچک در پیله ور
Esto puede ser molesto cuando sus relaciones se interrumpen y no se puede rastrear su teléfono. Ahora puede realizar esta actividad fácilmente con la ayuda de una aplicación espía. Estas aplicaciones de monitoreo son muy efectivas y confiables y pueden determinar si su esposa lo está engañando.
order lasuna for sale – himcolin tablets cost himcolin
Temp mail I really like reading through a post that can make men and women think. Also, thank you for allowing me to comment!
besivance brand – besivance for sale sildamax brand
order neurontin 600mg without prescription – cost neurontin 100mg sulfasalazine 500 mg pills
Ny weekly Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
purchase probalan without prescription – order generic probalan carbamazepine over the counter
Techno rozen This was beautiful Admin. Thank you for your reflections.
oral celecoxib 200mg – buy celecoxib online cheap buy indomethacin 75mg for sale
Real Estate Nice post. I learn something totally new and challenging on websites
order mebeverine generic – buy mebeverine 135mg without prescription order cilostazol generic
Fourweekmba I am truly thankful to the owner of this web site who has shared this fantastic piece of writing at at this place.
BaddieHub I do not even understand how I ended up here, but I assumed this publish used to be great
voltaren 100mg cost – buy aspirin 75mg without prescription buy cheap aspirin
cheap rumalaya sale – buy endep 50mg for sale buy generic elavil over the counter
pyridostigmine pills – buy cheap generic azathioprine oral imuran
allegheny county real estate Nice post. I learn something totally new and challenging on websites
buy diclofenac no prescription – imdur 20mg cheap buy cheap generic nimodipine
buy ozobax for sale – cheap feldene 20 mg order piroxicam 20mg generic
buy meloxicam sale – buy toradol online order toradol 10mg without prescription
periactin 4 mg drug – buy cyproheptadine tablets buy generic tizanidine
Pink Withney I do not even understand how I ended up here, but I assumed this publish used to be great
brand prednisone 10mg – order deltasone 5mg online buy elimite cream
Your article helped me a lot, is there any more related content? Thanks! https://accounts.binance.com/cs/register?ref=S5H7X3LP
buy permethrin cream for sale – acticin price brand tretinoin gel
betamethasone 20gm over the counter – benoquin online order cheap benoquin
flagyl sale – buy metronidazole generic buy cheap generic cenforce
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article. https://accounts.binance.com/ph/register?ref=B4EPR6J0