In today’s post I’m going to discuss two useful syntactical features of the new Razor view-engine – the @: and syntax support.
Mã hóa chất lỏng bằng dao cạo
ASP. NET MVC 3 cung cấp tùy chọn công cụ xem mới có tên là “Razor” [ngoài tùy chọn hiện có. công cụ xem aspx]. Bạn có thể tìm hiểu thêm về Razor, lý do chúng tôi giới thiệu nó và cú pháp mà nó hỗ trợ từ bài đăng trên blog Giới thiệu Razor của tôi.
Razor giảm thiểu số lượng ký tự và số lần nhấn phím cần thiết khi viết mẫu xem và cho phép quy trình mã hóa nhanh, trôi chảy. Không giống như hầu hết các cú pháp mẫu, bạn không cần phải ngắt đoạn mã của mình để biểu thị rõ ràng phần bắt đầu và phần cuối của các khối máy chủ trong HTML của bạn. Trình phân tích cú pháp Razor đủ thông minh để suy ra điều này từ mã của bạn. Điều này cho phép một cú pháp nhỏ gọn và biểu cảm, rõ ràng, nhanh chóng và thú vị để gõ
Ví dụ: đoạn mã Dao cạo bên dưới có thể được sử dụng để lặp lại danh sách sản phẩm
Khi chạy, nó tạo ra đầu ra như
One of the techniques that Razor uses to implicitly identify when a code block ends is to look for tag/element content to denote the beginning of a content region. For example, in the code snippet above Razor automatically treated the inner
block within our foreach loop as an HTML content block because it saw the openingKỹ thuật cụ thể này – sử dụng các thẻ để xác định các khối nội dung trong mã – là một trong những thành phần chính giúp Razor trở nên rõ ràng và hiệu quả với các tình huống liên quan đến tạo HTML
Sử dụng @. để chỉ ra rõ ràng sự bắt đầu của nội dung
Tuy nhiên, không phải tất cả các khối chứa nội dung đều bắt đầu bằng thẻ phần tử thẻ và có những tình huống mà trình phân tích cú pháp Razor không thể phát hiện ngầm một khối nội dung
Razor giải quyết vấn đề này bằng cách cho phép bạn chỉ rõ phần đầu của một dòng nội dung bằng cách sử dụng @. chuỗi ký tự trong một khối mã. Các @. chuỗi chỉ ra rằng dòng nội dung theo sau phải được coi là một khối nội dung
Như một ví dụ thực tế hơn, đoạn mã dưới đây minh họa cách chúng tôi có thể xuất ra thông báo “[Hết hàng. ]” bên cạnh tên sản phẩm của chúng tôi nếu sản phẩm hết hàng
Bởi vì tôi không gói [Hết hàng. ] trong phần tử thẻ HTML, Razor không thể xác định hoàn toàn rằng nội dung trong khối @if là phần bắt đầu của khối nội dung. Chúng tôi đang sử dụng @. chuỗi ký tự để biểu thị rõ ràng rằng dòng này trong khối mã của chúng tôi phải được coi là nội dung
Sử dụng Code Nuggets trong vòng @. khối nội dung
Ngoài việc xuất nội dung tĩnh, bạn cũng có thể nhúng các cốm mã trong một khối nội dung được bắt đầu bằng @. dãy ký tự.
Ví dụ: chúng tôi có hai @. trình tự trong đoạn mã dưới đây
Lưu ý làm thế nào trong vòng @ thứ hai. trình tự chúng tôi đang phát ra số lượng đơn vị còn lại trong khối nội dung [e. g. - "[Chỉ có 3 trái. ”]. Chúng tôi đang làm điều này bằng cách nhúng @p. Nugget mã UnitsInStock trong dòng nội dung
Nhiều dòng nội dung
Razor makes it easy to have multiple lines of content wrapped in an HTML element. For example, below the inner content of our @if container is wrapped in an HTML
element – which will cause Razor to treat it as content:
Đối với các tình huống trong đó nhiều dòng nội dung không được bao bọc bởi phần tử HTML bên ngoài, bạn có thể sử dụng nhiều @. trình tự
Alternatively, Razor also allows you to use a element to explicitly identify content:
The tag is an element that is treated specially by Razor. It causes Razor to interpret the inner contents of the block as content, and to not render the containing tag element [meaning only the inner contents of the element will be rendered – the tag itself will not]. This makes it convenient when you want to render multi-line content blocks that are not wrapped by an HTML element.
The element can also optionally be used to denote single-lines of content, if you prefer it to the more concise @: sequence:
The above code will render the same output as the @: version we looked at earlier. Razor will automatically omit the wrapping element from the output and just render the content within it.
Tóm lược
Razor enables a clean and concise templating syntax that enables a very fluid coding workflow. Razor’s smart detection of elements to identify the beginning of content regions is one of the reasons that the Razor approach works so well with HTML generation scenarios, and it enables you to avoid having to explicitly mark the beginning/ending of content regions in about 95% of if/else and foreach scenarios.
Razor’s @: and syntax can then be used for scenarios where you want to avoid using an HTML element within a code container block, and need to more explicitly denote a content region.
Hi vọng điêu nay co ich,
Scott
P. S. Ngoài việc viết blog, tôi hiện cũng đang sử dụng Twitter để cập nhật nhanh và chia sẻ liên kết. Theo dõi tôi tại. Twitter. com/scottgu