0

我正在使用 Razor 处理一些模板生成的东西,我希望完成以下语法:

        <div>
        @(Html.Use<LinkItem>("Story1",
        {
            <span>Something cool</span>
            <a href="@(item.Href)">@(item.Text)</a>
        }))
        </div>

或者,甚至更好

        <div>
        @(Html.Use<LinkItem>("Story1",
           <span>Something cool</span>
           <a href="@(item.Href)">@(item.Text)</a>
        ))
        </div>

使用模板化 Razor 代表,我得到了这个:

        <div>
        @(Html.Use<LinkItem>("Story1",
           @<span>Something cool</span>
           @<a href="@item.Href">
                @item.Text
            </a>
        ))
        </div>

问题是,我不想在块中的每个标签之前添加一个@,而且<text>标签看起来也不太好。

是否有可能实现我正在寻找的东西?或者也许还有其他方法?

4

1 回答 1

1

你能得到的最接近的是<text>节点:

@(Html.Use<LinkItem>("Story1", @<text>
    <span>Something cool</span>
    <a href="@(item.Href)">@(item.Text)</a>    
</text>))

我个人更喜欢使用显示模板:

@Html.DisplayFor(x => x.SomeCollectionProperty)

然后我定义了为集合的每个元素自动呈现的相应显示模板(~/Views/Shared/DisplayTemplates/SomeItem.cshtml

@model SomeItem
<span>Something cool</span>
<a href="@(Model.Href)">@Model.Text</a>
于 2013-04-03T11:36:48.957 回答