chỉ ra hình ảnh banner.jpg nằm cùng thư mục với trang chứa thẻ này. Khi bạn xâu dựng một ứng dụng web tĩnh, việc khai thác địa chỉ tương đối không là vấn đề. Tuy nhiên ở..." />
Master Pages và đường dẫn tương đối trong ASP.NET
Một trong những điểm thuận lợi của việc tạo liên kết là những địa chỉ tương đối. Ví dụ thẻ <img src="./banner.jpg" /> chỉ ra hình ảnh banner.jpg nằm cùng thư mục với trang chứa thẻ này. Khi bạn xâu dựng một ứng dụng web tĩnh, việc khai thác địa chỉ tương đối không là vấn đề. Tuy nhiên ở đây khi xây dựng một ứng dụng web với công nghệ .NET, bạn lại để master page nằm khác thư mục với các trang nội dung (.aspx) thì nhiều vấn đề phát sinh.
Mặc dù Microsoft đã khuyến khích đặt các thư mục chứa các trang master để hạn chế những sai sót này. Tuy nhiên, khi bạn cần tổ chức các tập tin trong ứng dụng web theo một cách riêng theo ý mình thì những sự cố như ví dụ sau sẽ là trở ngại với bạn.
Bạn có một trang chủ chứa thẻ <img src="./banner.jpg" />. Lúc này tập tin banner.jpg đang nằm cùng thư mục với trang master page. Và bây giờ bạn tạo một trang nội dung (.aspx) sử dụng masterpage nằm trong một thư mục khác. Khi đó khi thiết kế trong môi trường VS bạn vẫn thấy hình ảnh hiển thị, nhưng khi chạy ứng dụng sẽ báo lỗi đường dẫn đến hình ảnh banner.jpg đã khai báo.
Sự cố này xảy ra là do trang nội dung khi biên dịch đã hiểu rằng tệp tin banner.jpg được khai báo cùng thư mục với nó (do khi biên dịch master page đã trở thành một phần của trang nội dung). Điều này cũng sảy ra tương tự với các thẻ html khác như <a> <link>.
Để giải quyết vấn đề này khi khai báo một thẻ html bạn cần nghĩ là những trang nào sẻ sữ dụng lại master page để có thể điều chỉnh địa chỉ cho hợp lý. Ví dụ bạn khai báo <img src="../Master/banner.jpg" /> có nghĩa là hình ảnh nằm trong thư mục Master ngang cấp với thư mục chứa trang nội dung. Chú ý là bây giờ chúng ta quan tâm tới trang nội dung chứ không cần nghĩ đến trang master page.
Cách khác là khai báo tất cả các thẻ html trên được xử lý trên nền máy chủ để khi dịch ứng dụng sẽ tự thay thế đường dẫn tương đương. Ví dụ <img src="./banner.jpg" runat="server"/>. Nếu bạn còn chưa an tâm đến đường dẫn bạn có thể khai báo địa chỉ bằng đường dẫn từ thư mục gốc ~/. Ví dụ <img src="~/Master/banner.jpg" runat="server"/> có nghĩa hình banner.jpg thuộc thư mục Master là thư mục cấp thứ nhất của ứng dụng. Nên nhớ là cú pháp ~/ chỉ áp dụng được cho các thẻ chạy trên nền máy chủ (runat=”server”)
» Tin mới nhất:
» Các tin khác: