您好我收到错误:
Inline markup blocks (@<p>Content</p>) cannot be nested. Only one level of inline markup is allowed.
使用带有Razor View和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);
})
)
}
答案 0 :(得分:14)
我明白了。
我必须联系帮手。
每个多选的一个助手类。
关注此: http://www.aspnetwiki.com/telerik-mvc:nested-container-controls-and-razor-helper
然后如果你想在一个标签中有多个MultiSelect你需要为每个多选节提供一个帮助,如下所示:
这是助手,只需复制第二个第三个和第四个并更改名称等......
@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“内容”中调用帮助程序,如下所示:
.Items(tabstrip =>
{
tabstrip.Add().Text("One")
.Content(@<text>
@RenderMultiSelectFirstBox()
@RenderMultiSelectSecondBox()</text>);