Code website bằng ASP.NET

Chào mn,

Em đang học code website thương mại điện tử, hiện đã kết nối dữ liệu với SQL Server xong rồi, e đang chỉnh lại mấy file các trang website để kiểu load dữ liệu từ database lên thì gặp lỗi này, mn giúp e với ạ :<<<

Trước e cũng gặp lỗi này thì phát hiện ra sai là do phần truy vấn. Em thử sửa lại chỗ …WHERE MASP=A01" thì chạy web hiện ảnh của sản phẩm A01 được luôn ạ.

Nhờ mn giúp, e cảm ơn.

database bảng SANPHAM


file ShopOnlineBUS.cs

file ShopController.cs
Screenshot 2023-04-12 210504
file Details.cshtml

lỗi

Theo mình thấy thì trong file ShopOnlineBus thì hàm SingleOrDefault của bạn đang trả về null do có thể là mã sản phẩm không khớp, hoặc có thể do @0 không map được với biến a bên ngoài ấy bạn

Bạn ơi
Mình phát hiện nó sai chỗ đường dẫn


Đường dẫn đúng phải là /Shop/Details/A02
Không hiểu sao có 1 loạt ký tự %20 phía sau á.
Làm sao fix đc lỗi này taaaa

chuỗi “%20” là chuỗi mã hóa URL của kí tự khoảng trắng, có thể là lúc truyền A02 vào url bạn lỡ truyền thêm khoảng trắng nên nó mới bị như vậy

Mình cũng thử tìm mà không thấy khoảng trắng nào á :frowning:

Mình cũng lên mạng thêm dòng code id=id.Trim(); cũng ko đc luôn

image

Cậu kiểm tra trong database chưa? Mã SP của cậu có dấu cách không?
Trim có lẽ không hoạt động nếu như cậu không có bước convert url encoding.
Mà sao cậu không thử dùng debugger vậy? VS có tool debug xịn lắm mà :smile:

2 Likes

Trong database ko có khoảng trắng với mình tự nhập Shop/Details/A02 ko khoảng trắng nó vẫn ra trang web.

mình đã dùng lệnh xóa khoảng trắng trong id thêm vào thì nó báo null :frowning:

Từng vấn đề một thôi cậu, tớ thấy ít nhất cậu đang xử lý 3 vấn đề một lúc.
Giờ, với code mới nhất của cậu:

  • Cậu vào Shop/Details/A02 có chạy được không?
  • Link được tạo ra ở trang mà cậu ấn vào để qua trang shop detail là gì?
  • Cậu có thể chạy debug, đặt break point, hay in ra console được không? Giá trị biến id là gì?
  • Cậu config route như thế nào?

Lần lượt trả lời và đưa thêm thông tin nhé!

2 Likes

Đầu tiên thử URL /Shop/Details?id=A02, và debug xem id có giá trị hay không
Nếu có giá trị nghĩ là MapControllerRoute đang không đúng
Bạn check chỗ

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

xem đúng chưa.

1 Like
  • Giờ mình debug file Index.html: đây là file hiển thị danh sách sản phẩm của website. Code bên dưới ảnh
    các dòng lệnh @Url.Action… là để link đến trang Details.html: trang hiển thị single-products, chi tiết sản phẩm

  • Kết quả hiện trang này nha:

  • Xong mình click vô để xem chi tiết sản phẩm thì lỗi này

  • Xóa mấy đống %20%20 trên Url thì ra trang này với data đúng của sản phẩm mã A01

:(((((((

à nó chạy đc á bạn

app.MapControllerRoute(
name: “default”,
pattern: “{controller=Home}/{action=Index}/{id?}”);

ở đâu á :<<
phải này ko, file Routeconfig.cs
image

Có vẻ vấn đề nằm ở method lấy danh sách sp ở màn hình Index, bạn thử show method đấy lên xem có vấn đề gì không? Root cause của vấn đề đang nằm ở màn hình đó nên bạn tập trung vào xử lí ở màn hình index thôi, màn hình Detail của bạn vẫn đang hoạt động đúng với yêu cầu rồi.
Nhìn sơ qua thì thấy ở màn hình Index đang tự chèn 1 loạt kí tự khoảng trắng vào sau MASP của bạn

2 Likes

file Index.cshtml đây á b



mà lúc mình debug file Details.cshtml thì nó hiện bug này á
image

Giờ, cậu có thêm thông tin rồi.
Khi cậu tìm nguyên nhân của vấn đề gì, cậu phải thu hẹp phạm vi của vấn đề trước. Ở đây, cậu đã thấy rõ trang shop/detail không có vấn đề gì cả. Chuyện xảy ra khi ở trang index, vì lý do gì đó mà một vài dấu space được thêm vào khi cậu lấy MaSP từ item.
Cậu có thể quên trang shop detail đi, và tập trung vào trang index.

Giờ, cậu cần biết model của trang index chứa gì. Model đó lấy ở đâu ra? Cậu có thể show nội dung mã SP của từng item không?
Cậu có thể debug, hoặc tạo 1 thẻ html nào đó và nhét nội dung item.MaSP vào, để hiển thị ra màn hình.

Đó là cách cậu giảm dần phạm vi của vấn đề, và tránh đi lạc, như cậu đang lạc lối ở trang detail.

EDIT: giờ tớ mới thấy comment của @qloved :smile:
Cậu cần show code lấy dữ liệu để đưa ra trang index, chứ không phải show code cshtml (file này chứa template html mà cậu sẽ dùng dữ liệu từ model, chứ không đưa ra model lấy ở đâu)

3 Likes

Cảm ơn mn nhiều mình đã fix được rồi nha.
Tại vì MASP trong SQL mình khai báo kiểu dữ liệu CHAR(9) nên khi MASP chỉ có 3 kí tự như “A02” thì Url tự thêm 6 khoảng trắng mã hóa với %20 làm Url bị sai :))))
Thank mnnnnnnn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?