2013-08-06 27 views
8

Tôi có một ứng dụng web MVC4 và hiện tại tôi đang sử dụng một vài trang @helper trên nhiều trang, được xác định trong cshtml. Vấn đề là, tôi phải xác định chúng trên mỗi trang chúng được sử dụng. Có thể tạo một tệp .cshtml chứa tất cả các trang của tôi @helper và đưa trang đó vào chế độ xem của tôi không?Di chuyển các trình trợ giúp dao cạo thông thường sang một tệp khác

tức là điều này được sử dụng trên mỗi chế độ xem Chỉ mục trong khu vực cm.

@helper DisplayPager(Int32 CurrentPage, Int32 MaxPages) { 
    String IsActive = ""; 
    <div class="pagination pagination-centered"> 
     <ul> 
      <li><a href="@Url.Action("Index", new { id = CurrentPage - 1 > 0 ? CurrentPage - 1 : 1 })">Prev</a></li> 
      @for (int i = 0; i < MaxPages; i++) 
      { 
       IsActive = ((i + 1) == CurrentPage) ? "active" : ""; 

       <li class="@(IsActive)"><a href="@Url.Action("Index", new { id = i + 1 })">@(i + 1)</a></li>  
      } 
      <li><a href="@Url.Action("Index", new { id = CurrentPage + 1 < MaxPages ? CurrentPage + 1 : MaxPages })">Next</a></li> 
     </ul> 
    </div> 
} 

Cùng một định nghĩa, cùng mã, mọi thứ giống nhau, nhưng mã hiện có trong mã ít nhất 15 lần.

+0

Nó phụ thuộc những gì cơ thể của những phương pháp này, nhưng tôi sẽ khuyên bạn chỉ có một tập tin lớp tĩnh ('.cs') có tất cả các chức năng thông thường của bạn trong. Bạn có thể bao gồm tệp đó trong tệp '.cshtml' của bạn với' @include MyProject.MyHelpers' chẳng hạn. – musefan

+0

tôi đã cập nhật mã để làm cho việc trả lời dễ dàng hơn – bizzehdee

+0

Khả năng xác định các phương pháp trợ giúp có thể sử dụng lại bằng cú pháp @helper có sẵn, xem phần sau: http://weblogs.asp.net/scottgu/archive/ 2011/05/12/asp-net-mvc-3-và-the-helper-syntax-trong-razor.aspx –

Trả lời

10

Dưới đây là hướng dẫn để đạt được điều đó

Quy trình này cho bạn biết cách tạo trình trợ giúp tạo ghi chú như mô tả. Đây là một ví dụ đơn giản, nhưng trình trợ giúp tùy chỉnh có thể bao gồm bất kỳ mã đánh dấu và ASP.NET nào mà bạn cần.

  1. Trong thư mục gốc của trang web, tạo thư mục có tên App_Code. Đây là một tên thư mục dành riêng trong ASP.NET, nơi bạn có thể đặt mã cho các thành phần như người trợ giúp.

  2. Trong thư mục App_Code tạo tệp .cshtml mới và đặt tên là MyHelpers.cshtml.

  3. Thay thế nội dung hiện như sau:

    @helper MakeNote(string content) 
    { 
        <div class="note" 
         style="border: 1px solid black; width: 90%; padding: 5px; margin-left: 15px;"> 
        <p> 
         <strong>Note</strong>&nbsp;&nbsp; @content 
        </p> 
        </div> 
    } 
    

    Mã này sử dụng cú pháp @helper để khai báo một helper mới có tên MakeNote. Trình trợ giúp đặc biệt này cho phép bạn chuyển một tham số có tên là nội dung có thể chứa kết hợp văn bản và đánh dấu. Trình trợ giúp chèn chuỗi vào phần ghi chú bằng biến @content.

    Lưu ý rằng tệp có tên MyHelpers.cshtml, nhưng trình trợ giúp có tên MakeNote. Bạn có thể đặt nhiều người trợ giúp tùy chỉnh vào một tệp.

  4. Lưu và đóng tệp.

sao chép nó từ này article

+5

Công trình này, và dường như là cách tiêu chuẩn để làm điều đó, nhưng nó là một hack khủng khiếp như vậy. Tại sao Microsoft quyết định App_Code là nơi để đưa những người trợ giúp được chia sẻ ở bên ngoài tôi. Chế độ xem phải nằm trong Thư mục Chế độ xem. Điều này hoàn toàn phản trực giác. – user1751825

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