2012-09-25 11 views
5

Tôi đang cố gắng để đưa một số thẻ máy chủ nội tuyến trên một trang để tôi có thể có được con đường đúng đắn cho một hình ảnh, sử dụng Visual Studio 2012.Cách đúng để chèn thẻ máy chủ nội tuyến vào phần css của trang là gì?

tôi đang làm nó như thế này:

<style type="text/css"> 
.someclass 
{ 
    background-image: url(<%=Url.Content("~/Content/Images/messageIcon.gif")%>); 
} 
</style> 

Vấn đề là một khi điều này được viết, toàn bộ phần phong cách mất định dạng màu sắc với trình soạn thảo VS2012. Có phải là một cách khác nhau để làm điều này (hoặc một lựa chọn trong VS2012), để tôi sẽ không mất màu sắc và thụt đầu dòng?

+1

Tại sao isn' t điều này được khai báo trong một tệp CSS bên ngoài? – cimmanon

Trả lời

3

Lý do khiến studio trực quan bị mất hình thành là bạn đang trộn css và mã phía máy chủ như dưới đây.

<style type="text/css"> 
.someclass 
{  
    background-image: url(<%=Url.Content("~/Content/Images/messageIcon.gif")%>); 
}  
</style> 

Bạn nên tách mã css khỏi mã của mình.

đường dẫn hình ảnh có liên quan đến vị trí của tập tin css, vì vậy css như dưới đây là chính xác, do đó bạn không cần phải sử dụng một con đường ứng dụng làm việc ra bởi Url.Content (~)

.someclass 
{  
    background-image: url(../Images/messageIcon.gif); 
}  
+0

Điều gì sẽ xảy ra nếu các quy tắc css đó nằm trên trang chính? Chế độ xem tải dựa trên tổng thể có vị trí khác với vị trí của trang mater. Tôi sẽ cần thêm nhiều hơn ../ tùy thuộc vào vị trí của khung nhìn để có được đường dẫn đúng. –

+0

Vấn đề là (theo nhận xét của cimmanon) CSS của bạn nên được tách ra khỏi aspx của bạn. Hình ảnh của phong cách được thêm vào theo cách mà bạn đang cố gắng gây ra các vấn đề về định dạng Visual Studio, vì bạn đang sử dụng các thẻ máy chủ trong CSS. Trong một tệp CSS riêng biệt, đường dẫn hình ảnh sau đó tương ứng với css. –

+0

Sẽ ghi nhớ điều đó. Cảm ơn. –

3

Đó là vấn đề hoặc tính năng của Visual Studio Highlight cho các kiểu css. Hãy thử sử dụng các URL tương đối của máy chủ, được biết đến.

Nếu bạn cần chèn mã phía máy chủ vào kiểu css, bạn có thể sử dụng thuộc tính style trong đánh dấu html. Ví dụ:

<div class="beautiful-button" style="background-image: url('<%=Url.Content("~/Content/Images/messageIcon.gif")%>')"> 
... 
</div> 

Nếu bạn không thích mã này hoặc bạn cần phải sử dụng nó nhiều hơn một lần ở những nơi khác nhau, cách tốt nhất là để tạo ra sự kiểm soát server-side của riêng bạn với một URL tài sản công cộng (ví dụ). Cuối cùng, nó sẽ trông giống như sau:

<asp:MyOwnControl runat="server" class="beautiful-button" URL="~/Content/Images/messageIcon.gif" /> 
+0

Vấn đề là tôi không phải lúc nào cũng biết URL tương đối của Chế độ xem vì các syles này được sử dụng trên Trang chính. –

+0

Có. Bạn đúng, nhưng như tôi hiểu, ý tưởng của trang cái là cung cấp một mẫu cho một trang nội dung. Vì vậy, cách tốt nhất là để ghi đè lên phong cách trang chính trong trang nội dung. Tôi nghĩ rằng trang chủ không cần biết về các trang nội dung. Bạn có đồng ý với tôi không? – Warlock

+0

Vâng, bạn nói đúng. Nhưng trong trường hợp này, ví dụ, chúng tôi có một phong cách cho một nút. Kiểu này được sử dụng trong tất cả các khung nhìn kế thừa trang cái. Tôi sẽ phải lặp lại phong cách trên tất cả các chế độ xem, điều này sẽ đánh bại mục đích của trang chính, giữ mọi thứ chung cho tất cả các Chế độ xem. –