2011-08-18 101 views
3

下面是用戶等級顯示在我看來代碼:模板ASP.NET MVC視圖

<div class="leftBlock"> 
    <div class="leftBlockHead"> 
     <div class="textHead"> 
      <b>Users rating</b> 
     </div> 
    </div> 
    <div id="leftBlockContent"> 
     @foreach (var user in Model) 
     { 
      <div class="list"> 
       @user.Login @user.Rating 
      </div> 
     } 
    </div> 
</div> 

問題是我使用相同的HTML結構的一些其他塊。所以我不想重複這段代碼,我需要某種模板,它會將塊標題和@foreach作爲參數。有什麼方法來實現它?

回答

0

我終於使用了Templated Razor Delegates

這裏是我的局部視圖:

@model LeftColumnBlockViewModel 

<div class="levo_blok1"> 
    <div class="levo_blok1_head"> 
     <div class="text_head"> 
      @Model.Title 
     </div> 
    </div> 
    <div id="levo_blok1_content"> 
     @Model.Content(null) 
    </div> 
</div> 

這裏是它的視圖模式:

public class LeftColumnBlockViewModel 
    { 
     public string Title { get; set; } 
     public Func<dynamic, object> Content { get; set; } 

     public LeftColumnBlockViewModel(string title, Func<dynamic, object> content) 
     { 
      Title = title; 
      Content = content; 
     } 
    } 

,並在這裏被使用:

@Html.Partial(MVC.Shared.Views._LeftColumnBlock, 
       new LeftColumnBlockViewModel(
        Battles.CurrentBattles, 
        @<text> 
        @foreach (var currentBattle in Model.CurrentBattlesViewModels) 
        { 
         <div class="list"> 
          @currentBattle.Budget/@currentBattle.BetLimit%/@[email protected] 
         </div> 
        } 
        </text>)) 
1

你可以看看創建HTMLHelper類的擴展方法來做這樣的渲染。
您也可以使用HTMLHelper RenderPartial方法。爲此,您需要定義

  • 單獨的視圖類。
  • 有一個與之相關的模型。調用
  • RenderPartial擴展,這個視圖需要渲染。
+0

但我怎麼能傳遞的foreach聲明部分觀點? – SiberianGuy

0

我會繼續前進,編寫自定義HTML輔助做到這一點......它看起來像

@helper YourHelper(Model model){ 
**DO YOUR FOREACH STUFF IN HERE** 
<div class="leftBlock"> 
    <div class="leftBlockHead"> 
     <div class="textHead"> 
      <b>model.Title</b> 
     </div> 
    </div> 
    <div id="leftBlockContent"> 
     @Html.Raw(model.Content) 
    </div> 
</div> 
} 

,然後你會使用它.. @ YourHelper(模型)

http://weblogs.asp.net/jgalloway/archive/2011/03/23/comparing-mvc-3-helpers-using-extension-methods-and-declarative-razor-helper.aspx