【问题标题】:Templated Razor Delegates - Simpler HTML blocks模板化 Razor 代表 - 更简单的 HTML 块
【发布时间】:2013-04-03 09:48:55
【问题描述】:

我正在使用 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>

使用 Templated Razor Delegates,我得到了这个:

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

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

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

【问题讨论】:

    标签: c# templates razor


    【解决方案1】:

    你能得到的最接近的是&lt;text&gt; 节点:

    @(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>
    

    【讨论】:

    • 我是这样的 - 我采用了这种方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多