Razor ViewEngine: Làm cách nào để thoát khỏi biểu tượng “@”?


101

Tôi đang cố gắng xuất một số điều khiển Twitter trong ASP.NET MVC3 kết hợp với Twitter @Anywhere API và tôi chưa thể tìm ra cách thực sự thoát khỏi biểu tượng "@" trong chế độ xem Razor.

Có ai biết cú pháp để thoát ký tự "@" trong Razor là gì không?

Tôi đã thử sử dụng <text></text>và điều đó dẫn đến lỗi JIT.


2
Bạn cũng có thể sử dụng thực thể HTML &#64;.
rsenna

Câu trả lời:


143

Bạn phải sử dụng @@ để thoát khỏi biểu tượng @.

Một điều quan trọng cần lưu ý là bạn KHÔNG cần phải thoát ký hiệu @ khi nó tồn tại trong địa chỉ email. Razor phải đủ thông minh để tự mình tìm ra điều đó.


4
<a href="" title="this @@ sẽ không hoạt động"> </a>, cả lỗi cú pháp trong VS và lỗi phân tích cú pháp trong thời gian chạy.
Tien Do,

1
@Tien xem mã nhân vật HTML trước đây làm việc cho tôi: stackoverflow.com/a/13584640/84206
AaronLS

25

Nếu bạn đang thêm thẻ meta Twitter

và tên người dùng Twitter của bạn là, foobar

Nó sẽ giống như thế này

<meta name="twitter:site" content=@("@foobar")>

16

nếu bạn cần nhận xét ký hiệu @ trong mã css và chỉ @@ không hoạt động, hãy sử dụng cái này:

@("@@font-face"){ ... css ...}

1
Đây là phương pháp tốt nhất vì thực thể HTML không hữu ích trong CSS.
ChrisF

2

Tôi có một trường hợp kỳ lạ khác: chuyển '@' + @Model.SomePropertyđến một liên kết href.

Giải pháp tốt nhất cho trường hợp này đã được IMO đưa ra trong câu trả lời cho một câu hỏi tương tự. Cả hai @@@:không hoạt động trong khi sử dụng mã html &#64;sẽ làm phức tạp mọi thứ.

Vì vậy, mã của tôi là <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery cũng sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.