2011-10-14 22 views
6

Tôi có một chế độ xem một phần bao gồm một div với benner mà tôi thay đổi mỗi tuần một lần. Biểu ngữ này được nhúng trong 10 trang có cùng bố cục.mvc3 nhúng một phần xem trong một số khác

tặng một trang như Index.cshtml hoặc AboutUs.cshtml, cả hai là quang cảnh một phần và có laypout _Layout.cshtml câu hỏi của tôi là:

Tôi có thể INSER mã trong Index.cshtml hoặc AboutUs.cshtml mà ám Banner .cshtml?

cái gì đó như:

bên Index.cshtml hoặc AboutUs.cshtml Tôi có @ Html.Renderbanner ("banner.cshtml");

Trả lời

6

Vâng,

@{ Html.RenderPartial("_Banner"); } 

Trong thư mục xem chia sẻ của bạn, thêm xem một phần của bạn và gọi nó là _Banner.cshtml

0

Chắc chắn, bạn có thể luôn:

@Html.Partial("Banner") 

từ bất kỳ quan điểm hoặc tầm nhìn hạn chế. Điều này sẽ hiển thị phần Banner.cshtml ở nơi bạn gọi là trình trợ giúp này.

1

Sử dụng @ Html.RenderPartial ("YourViewName");

0

Trước tiên, chỉ cần làm rõ: Chỉ mục và Giới thiệu thực sự có một phần lượt xem trong kịch bản của bạn? Điều đó có thể thay đổi lời khuyên của tôi, nhưng thông thường tôi thấy ba tùy chọn:

  1. Razor Helper, tạo Banner.cshtml trong App_Code với đoạn mã sau:

    @helper Show(){ 
        <img src="mybanner.png"/> 
    } 
    

    Sau đó gọi trong Index.cshtml :

    @Banner.Show() 
    
  2. Html Helper mở rộng , Một chút quá mức cần thiết ở đây có lẽ (xem hướng dẫn trên web)

  3. phần Xem: Tạo "_MyBanner.cshtml" và sử dụng như sau trong Index.cshtml:

    @Html.Partial("_MyBanner"); 
    

(Số 3 là một trong những điều có thể khó khăn nếu Index và AboutUs cũng là một phần lượt xem, nhưng 1 cái tôi sẽ chọn.)

Lưu ý: Có sự khác biệt giữa Html.Partial và Html.RenderPartial. Sau này ghi trực tiếp vào luồng đầu ra và sẽ yêu cầu bạn gọi nó trong dấu ngoặc đơn. Trong MVC AFAIK, cách tốt nhất là sử dụng Html.Partial.

0

Bạn có thể tạo một RenderSection trong layout.cshtml

@if (IsSectionDefined("Sidebar")) 
    { 
     <div id="page"> 
      <!-- end #content --> 
      <div id="content"> 
       @RenderBody() 
      </div> 
      <div id="sidebar"> 
       @RenderSection("Sidebar", required: false) 
      </div> 
      <div style="clear: both;"> 
       &nbsp;</div> 
     </div> 
     <!-- end #page --> 
     <!-- end #sidebar --> 

    } 
    else 
    { 
     <div id="page"> 
      <!-- end #content --> 
      <div id="content2"> 
       @RenderBody() 
      </div> 
      <div style="clear: both;"> 
       &nbsp;</div> 
     </div> 
     <!-- end #page --> 
     <!-- end #sidebar --> 

    } 

nếu bạn cần thấy secction trong khoảng.cshtml

sử dụng

@section Sidebar{ 
    @Html.Partial("_yourbanner") 
} 

nếu bạn không cần các biểu ngữ không bao gồm nó

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