MVC参数化元素

时间:2014-04-24 12:23:52

标签: asp.net-mvc razor

我有一个局部视图,我想根据模型的属性显示不同类型的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。实际上,元素类型来自父视图,所以我认为这没关系。)

非常感谢提前。

1 个答案:

答案 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())
}