2011-08-18 92 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