2012-05-21 47 views
9

我只有一个模式窗口,里面有telerik网格。但我需要在我的网格呈现图像,因为据我了解,我不能使用@两次。这里是关于这个问题的博客文章Link嵌入标记块不能嵌套。只允许一级内联标记。 MVC RAZOR

有人可以帮助我。

我的代码

@{ Html.Telerik().Window() 
    .Name("images") 
    .Title("Select an Image") 
    .Content(@<text> 

@(Html.Telerik().ComboBox() 
      .Name("AjaxComboBox66") 
      .AutoFill(true) 
      .SelectedIndex(0) 
      .BindTo(new SelectList(Model.PhotoFolders, "ID", "Name")) 
      .Filterable(filtering => filtering.FilterMode(AutoCompleteFilterMode.StartsWith)) 
      .HighlightFirstMatch(true) 
      .ClientEvents(events => events 
       .OnChange("onChange") 
      ) 
    ) 

     @(Html.Telerik().Grid<AjaxImages>() 
    .Name("Grid") 
    .DataKeys(keys => keys.Add(c => c.ID)) 
    .Columns(columns => 
    { 
     columns.Template(
      @<text> 
       <img src='@item.Url' /> 
//Here is my error. I need helper function 
      </text> 

).Title("Picture"); 

    }) 

           .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts")) 

         .Scrollable(scrolling => scrolling.Enabled(true)) 
         .Sortable(sorting => sorting.Enabled(true)) 
          .Pageable(paging => paging.Enabled(true).PageSize(20).Total(100).Style(GridPagerStyles.NextPreviousAndNumeric)) 
         .Filterable(filtering => filtering.Enabled(true)) 
         .Groupable(grouping => grouping.Enabled(false)) 
         .EnableCustomBinding(true) 

         .Footer(true)) 
       </text>) 
    .Width(400) 
    .Draggable(true) 
    .Modal(true) 
    .Visible(false) 


    .Render(); 
} 

我GetImages函数返回我JSON与 “ID” 和 “URL”。

回答

16

在这些情况下,可以使用MVC Razor帮助函数。 使用网格控件定义创建辅助函数,在这种情况下为RenderGrid()

@helper RenderGrid() 
{ 
    @(Html.Telerik().Grid<AjaxImages>() 
    .Name("Grid") 
    .DataKeys(keys => keys.Add(c => c.ID)) 
    .Columns(columns => 
    { 
     columns.Template(
     @<text> 
      <img src='@item.Url' /> 
     </text> 
     ).Title("Picture"); 
    }) 
    .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts")) 
} 

调用窗口内容定义中的帮助函数。如果需要,辅助函数可以被多次调用。

@{Html.Telerik().Window() 
     .Name("images") 
     .Title("Select an Image") 
     .Content(
     @<text> 
      @RenderGrid() 
     </text>) 
     .Width(400) 
     .Draggable(true) 
     .Modal(true) 
     .Visible(false) 
     .Render(); 
} 
+0

几乎完成,请检查两个屏幕截图。我没有得到任何错误,但图像​​是空的。我试图渲染为文本,我的ajax正在工作。你知道为什么我没有得到我的图像吗? http://prntscr.com/9ix3a http://prntscr.com/9ix3x –

+2

您正在使用ajax绑定,因此需要使用客户端模板,而不是服务器绑定模式模板。试试这个: 'columns.Bound(c => c.ID).ClientTemplate(“<#= ID #>”)。标题(“图片”);' – Igorrious

+0

这就是正确答案! U规则! –