2011-11-12 11 views
8

Tôi đang tìm kiếm công cụ Razor và tôi tự hỏi nó khác biệt như thế nào so với triển khai ASP cổ điển ban đầu, nơi mã phía máy chủ và đầu cuối ở cùng một trang.Sử dụng Razor kinda giống như quay trở lại cổ điển asp

Tại sao tôi nên quan tâm đến Razor?

+0

Bản sao có thể có của chuỗi này http://stackoverflow.com/questions/558002/asp-net-mvc-classic-asp-with-net-class-library-really – Chandermani

+0

@Chandermani - Đó là về ASP.Net MVC không Dao cạo. – klabranche

+1

@klabranche công cụ xem không quan trọng, mối quan tâm ở đây là trộn lẫn giao diện người dùng và mã phía máy chủ. – Chandermani

Trả lời

7

Trong ASP cổ điển, bạn đã từng có mã doanh nghiệp trong tệp của mình ("Lấy nội dung từ cơ sở dữ liệu và hành động trên đó").

Trong ASP.net MVC - bất kể bạn sử dụng ASPX hay Razor View Engine - bạn đang xử lý Xem Logic. Những thứ như "Tôi có 20 nhân viên, hiển thị chúng trong một bảng" hoặc "Nếu số này là số âm, hiển thị màu đỏ thay vì màu đen".

Logic nghiệp vụ nằm trong bộ điều khiển và thấp hơn. Bộ điều khiển sau đó chuyển dữ liệu nghiệp vụ tới khung nhìn thông qua một mô hình khung nhìn. View sau đó chỉ có mã xử lý hiển thị nó, thường nhỏ nhưng có thể có một vài nhánh logic của riêng nó ("Ngày hiển thị trong miền người dùng" hoặc "Hiển thị nhân viên nam và nữ trong các bảng riêng biệt")

Bạn có thể phạm sai lầm khi đặt logic nghiệp vụ tại đây. Nói, nhân viên được thuê trước năm 2008 đủ điều kiện để được cấp Chứng chỉ trung thành. Vì vậy, bảng của bạn có một cột "In chứng chỉ" mà chỉ được hiển thị cho các. Phương pháp đơn giản, nhưng sai là đặt một lệnh if-:

@if(employee.HireYear <= 2008) { 
    Html.ActionLink("Print Certificate","Certificate","Cheese", 
     new { id = employee.Id }, null); 
} 

này hoạt động, nhưng là sai vì xem bây giờ chứa logic kinh doanh. Cách tiếp cận đúng là thêm một trường bool mới vào ViewModel. Vì nó có chứa một IList<Employee> trong ví dụ này, điều đó có nghĩa là tạo một lớp khác EmployeeWithCertificateEligibility hoặc tốt hơn, có danh sách riêng biệt cho nhân viên đủ điều kiện và không đủ điều kiện. Đó là hơi phổ biến mặc dù có logic kinh doanh tràn vào xem, đôi khi dưới hình thức của một phương pháp mở rộng HtmlHelper.

Chỉnh sửa: Bạn so sánh nó với "triển khai asp cổ điển ban đầu". Điều đó có thể có nghĩa là ba điều: ASP cổ điển, ASP.net WebForms hoặc ASP.net MVC với công cụ xem WebForms/ASPX. Ví dụ của tôi liên quan đến hai trường hợp đầu tiên. Nếu bạn đã biết toàn bộ các công cụ MVC và tự hỏi về sự khác biệt giữa Webforms và Razor View Engine: Về mặt khái niệm, chúng giống nhau, Razor chỉ kém tiết kiệm hơn và sạch hơn.

6

Đó là tất cả cách bạn sử dụng.

Ưu điểm chính mà tôi thấy của Razor là nó cho phép nhà phát triển gọn nhẹ và biểu cảm hơn với bố cục giống như Spark hoặc NHaml.

Thay vì viết:

<% Foreach(var x....) { %> 
<li><%=x.PropertyName%> (<%=x.AnotherProperty%>)</li> 
<% } </%> 

Bạn có thể viết nó trong một cách linh hoạt hơn:

@foreach(var x...) { 
<li>@x.PropertyName (@x.AnotherProperty)</li> 
} 

Nó dễ dàng hơn để đọc, chảy độc đáo hơn và trong những trường hợp phức tạp hơn có thể được ít mã.

Thực tế là Dao cạo và thậm chí là các WebForms cổ điển, bạn có thể trộn mã và đánh dấu lại với nhau.

Điều này tùy thuộc vào người lập trình biết khi nào đó là điều tốt hay điều xấu.

Thật tệ khi rắc một chút logic vào chế độ xem. Có lẽ không. Có tệ khi viết toàn bộ logic của bạn vào View có khả năng nhất là có. Điều gì nếu nó là một ứng dụng hai trang đơn giản so với một ứng dụng doanh nghiệp ..... Tôi nghĩ rằng bạn có được sự trôi dạt của tôi. :-)

Here's a nice write upanother một số thứ mà Razor có thể làm điều đó cũng làm cho công cụ xem mạnh mẽ hơn ASP cổ điển.

Tư tưởng chia tay. Razor là một công cụ xem. Nó được thiết kế để làm cho công việc của chúng tôi dễ dàng hơn trong việc chế tạo khung cảnh. Nó không được thiết kế/có nghĩa là để mã hóa toàn bộ logic ứng dụng của chúng tôi. Nếu bạn là, bạn chắc chắn đang làm điều đó sai.

ASP cổ điển không thực sự có sự phân biệt dễ dàng về công cụ xem so với mã là gì.

0

Câu hỏi của bạn ngụ ý rằng bạn không tăng tốc với ASP.NET MVC. Câu hỏi của bạn áp dụng cho ASP.NET MVC WebForms, không chỉ các tệp .cshtml hoặc .vbhtml. Tức là, câu hỏi của bạn là về lượt xem trong MVC.

Về mặt học tập, bạn đang đặt con ngựa trước giỏ hàng. Bất kỳ cuốn sách nào trên MVC sẽ bắt đầu bằng một mô tả về sự khác biệt giữa MVC, ASP.NET plain vanilla và những gì có thể được gọi là ASP.COM hoặc ASP cổ điển.

Logic mà bạn viết vào Chế độ xem trong MVC bằng Razor hoặc công cụ xem của bạn là Display Logic. ASP cổ điển là bất kỳ logic, kinh doanh, hiển thị, truy cập dữ liệu ...

Vì vậy, để trả lời câu hỏi của bạn, bạn nên quan tâm đến MVC (chứ không chỉ là Razor) vì nó cho phép bạn chia logic đó thành . Bạn không kết hợp tất cả trong View.

Tức là, bạn nên quan tâm điều gì và quyết định xem nó có phù hợp với bạn hay không, là ASP.NET MVC. Nếu bạn quyết định bạn quan tâm đến MVC (vì nó làm cho cuộc sống của bạn dễ dàng hơn và khách hàng của bạn hạnh phúc hơn), bạn chắc chắn nên quan tâm đến Razor, bởi vì nó làm cho cuộc sống của bạn dễ dàng hơn.

+1

lời khuyên tốt ... mặc dù tôi thường nghĩ rằng con ngựa nên 'đi trước giỏ hàng ;-) – puddleglum

Các vấn đề liên quan