我有一个局部视图,我想根据模型的属性显示不同类型的HTML元素。我提出的解决方案是:
@if (Model.Element == "span")
{
<span>
Some stuff
</span>
}
else if (Model.Element == "p")
{
<p>
Some stuff
</p>
}
else
{
<div>
SomeStuff
</div>
}
这显然不是非常可扩展的。我想写一些类似的东西:
<@Model.Element>
Some stuff
</@Model.Element>
但似乎不允许。有没有办法做这样的事情。
(我很欣赏这有点违背MVC作为模型,因此控制器指定HTML。实际上,元素类型来自父视图,所以我认为这没关系。)
非常感谢提前。
答案 0 :(得分:1)
@Html.Raw("<" + Model.Element + ">")
Some Stuff
@Html.Raw("</" + Model.Element + ">")
尽可能简单。虽然您可以随时使用TagBuilder
:
@{
TagBuilder tb = new TagBuilder(Model.Element);
tb.InnerHtml = "Some Stuff";
@Html.Raw(tb.ToString())
}