内联标记块 (@<p>Content</p>) 不能嵌套。只允许一级内联标记

Posted

技术标签:

【中文标题】内联标记块 (@<p>Content</p>) 不能嵌套。只允许一级内联标记【英文标题】:Inline markup blocks (@<p>Content</p>) cannot be nested. Only one level of inline markup is allowed 【发布时间】:2013-11-23 22:27:42 【问题描述】:

您好,我收到错误消息:

Inline markup blocks (@<p>Content</p>) cannot be nested.  Only one level of inline markup is allowed.

在 Razor 视图和 MVC4 中使用 Kendo UI 选项卡和 MultiSelectBoxes

我已经尝试实现帮助类,但我仍然收到错误

这是我的代码,我错过了一步吗?我将 3 个多选移出并使用助手调用它们!

@(html.Kendo().TabStrip()
      .Name("tabstrip")
      .Items(tabstrip =>
      
          tabstrip.Add().Text("One")                  
              .Content(@<div>                                   
                            @RenderSelect() 
                        </div>;);

          tabstrip.Add().Text("Two")
              .Content("Two");

          tabstrip.Add().Text("Three")
              .Content("Three");
      )
      .SelectedIndex(0)
)

@helper RenderSelect()

                                    <h2>MyList</h2>
                                    <label>One</label>
                                    @(Html.Kendo()
                                          .MultiSelect()
                                          .Name("One")
                                          .AutoBind(true)
                                          .Placeholder("Select Clients...")
                                          .DataTextField("hname")
                                          .DataSource(source =>
                                          
                                              source.Read(read =>
                                              
                                                  read.Action("Client", "Dist");
                                              )
                                                    .ServerFiltering(true);
                                          )

                                    )
                                    <label>Two</label>
                                    @(Html.Kendo()
                                          .MultiSelect()
                                          .Name("Two")
                                          .AutoBind(true)
                                          .DataTextField("gname")
                                          .Placeholder("Select Recipients...")
                                          .DataSource(source =>
                                          
                                              source.Read(read =>
                                              
                                                  read.Action("Client", "Dist");
                                              )
                                                    .ServerFiltering(true);
                                          )

                                          )
                                     <label>Three</label>
                                    @(Html.Kendo()
                                          .MultiSelect()
                                          .Name("Three")
                                          .AutoBind(true)
                                          .DataTextField("id")
                                          .Placeholder("Select CLL...")
                                          .DataSource(source =>
                                          
                                              source.Read(read =>
                                              
                                                  read.Action("Codes", "Dist");
                                              )
                                                    .ServerFiltering(true);
                                          )

                                    )

【问题讨论】:

【参考方案1】:

我想通了。

我必须链接助手。

所以每个多选都有一个帮助类。

按照这个: http://www.aspnetwiki.com/telerik-mvc:nested-container-controls-and-razor-helper

然后,如果您想在一个选项卡中进行多个多选,您将需要为每个多选提供一个帮助程序,如下所示:

这里是帮手,把这个复制到第二个第三个和第四个然后改名字等等...

@helper RenderMultiFirstBox()

      @(Html.Kendo()
                .MultiSelect()
                .Name("First")
                .AutoBind(true)
                .Placeholder("Select First...")
                .DataTextField("name")
                .DataSource(source =>
                  
                      source.Read(read =>
                      
                           read.Action("Index", "Something");
                      )
                 .ServerFiltering(true);
                   )

          )
    

然后像这样调用 TabStrip 'Content' 中的助手:

.Items(tabstrip =>
          
              tabstrip.Add().Text("One")

                  .Content(@<text>
                                                       @RenderMultiSelectFirstBox() 
                                                       @RenderMultiSelectSecondBox()</text>);

【讨论】:

以上是关于内联标记块 (@<p>Content</p>) 不能嵌套。只允许一级内联标记的主要内容,如果未能解决你的问题,请参考以下文章

CSS--基础块级元素与内联元素

前端基础

块级元素和内联元素之间的嵌套规则

CKEditor5内联构建在h1标记内放置一个p标记 - 如何禁用它?

标签嵌套规则

html