C# 模板化Razor委托-更简单的HTML块
我正在使用Razor进行一些模板生成工作,我希望完成以下语法:C# 模板化Razor委托-更简单的HTML块,c#,templates,razor,C#,Templates,Razor,我正在使用Razor进行一些模板生成工作,我希望完成以下语法: <div> @(Html.Use<LinkItem>("Story1", { <span>Something cool</span> <a href="@(item.Href)">@(item.Text)</a> })) </di
<div>
@(Html.Use<LinkItem>("Story1",
{
<span>Something cool</span>
<a href="@(item.Href)">@(item.Text)</a>
}))
</div>
@(Html.Use(“故事1”,
{
酷的东西
}))
或者,甚至更好
<div>
@(Html.Use<LinkItem>("Story1",
<span>Something cool</span>
<a href="@(item.Href)">@(item.Text)</a>
))
</div>
@(Html.Use(“故事1”,
酷的东西
))
使用模板剃须刀代理,我得到了以下结果:
<div>
@(Html.Use<LinkItem>("Story1",
@<span>Something cool</span>
@<a href="@item.Href">
@item.Text
</a>
))
</div>
@(Html.Use(“故事1”,
@酷的东西
@
))
问题是,我不想在块中的每个标记之前都添加@,而且
标记看起来也太好了
有可能实现我所追求的目标吗?或者可能还有其他方法?您可以通过
节点获得最接近的结果:
@(Html.Use<LinkItem>("Story1", @<text>
<span>Something cool</span>
<a href="@(item.Href)">@(item.Text)</a>
</text>))
然后我定义了相应的显示模板,它会自动为集合的每个元素呈现(~/Views/Shared/DisplayTemplates/SomeItem.cshtml
)
@model SomeItem
酷的东西
我认为是这样-我采用了这种方法。谢谢
@Html.DisplayFor(x => x.SomeCollectionProperty)
@model SomeItem
<span>Something cool</span>
<a href="@(Model.Href)">@Model.Text</a>