内联标记块不能嵌套.只允许一级内联标记.MVC 剃须刀 [英] Inline markup blocks cannot be nested. Only one level of inline markup is allowed. MVC RAZOR

查看:13
本文介绍了内联标记块不能嵌套.只允许一级内联标记.MVC 剃须刀的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个带有 Telerik 网格的模态窗口.但我需要在我的网格中渲染图像,所以我知道我不能使用 @ 两次.这是关于此问题的博客文章链接p>

谁能帮帮我.

我的代码

@{ Html.Telerik().Window().Name("图片").Title("选择一张图片").Content(@<文本>;@(Html.Telerik().ComboBox().Name("AjaxComboBox66").自动填充(真).SelectedIndex(0).BindTo(new SelectList(Model.PhotoFolders, "ID", "Name")).Filterable(过滤 => 过滤.FilterMode(AutoCompleteFilterMode.StartsWith)).HighlightFirstMatch(真).ClientEvents(事件 => 事件.OnChange("onChange")))@(Html.Telerik().Grid<AjaxImages>().Name("网格").DataKeys(keys => keys.Add(c => c.ID)).Columns(列=>{列.模板(@<文本><img src='@item.Url'/>//这是我的错误.我需要辅助功能</文本>).Title("图片");}).DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts")).Scrollable(scrolling => scrolling.Enabled(true)).Sortable(排序=>排序.启用(真)).Pageable(paging => paging.Enabled(true).PageSize(20).Total(100).Style(GridPagerStyles.NextPreviousAndNumeric)).Filterable(过滤=>过滤.启用(真)).Groupable(分组 => grouping.Enabled(false)).EnableCustomBinding(true).页脚(真))</文本>).宽度(400).可拖动(真).Modal(真).可见(假).使成为();}

我的 GetImages 函数返回带有ID"和URL"的 json.

解决方案

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

@helper RenderGrid(){@(Html.Telerik().Grid<AjaxImages>().Name("网格").DataKeys(keys => keys.Add(c => c.ID)).Columns(列=>{列.模板(@<文本><img src='@item.Url'/></文本>).Title("图片");}).DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts"))}

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

 @{Html.Telerik().Window().Name("图片").Title("选择一张图片").内容(@<文本>@RenderGrid()</文本>).宽度(400).可拖动(真).Modal(真).可见(假).使成为();}

I one one modal window with telerik grid inside. But i need to render images in my grid so as i understand i cant use @ twice. Here is blog post about this issue Link

Can someone assist me please.

My Code

@{  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();
} 

My GetImages function return me json with "ID" and "URL".

解决方案

In these situations the MVC Razor helper function can be used. Create the helper function with the grid control definition, in this case 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"))
}

Call the helper function inside the window's content definition. The helper functions can be called multiple times if needed.

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

这篇关于内联标记块不能嵌套.只允许一级内联标记.MVC 剃须刀的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆