Asp.net mvc 基于模型属性值在视图中呈现html代码段

Asp.net mvc 基于模型属性值在视图中呈现html代码段,asp.net-mvc,Asp.net Mvc,如何根据模型的属性值在视图中添加自定义HTML 例如,我的模型有一个字符串属性“MyType”,它可以有值“ABC”、“DEF”或“GHI” 然后,在视图中,我想输出大量HTML,特定于随模型传递的单个“MyType” 我知道在视图中我可以有一个helper函数,它查看Model.MyType并有一个switch语句来显示一些HTML,但是有没有更优雅的方法来实现这一点,从视图中抽象出HTML 即使我可以创建一个有开关的helper函数,但是随后调用一个cshtml文件来获得适当的HTML。我的

如何根据模型的属性值在视图中添加自定义HTML

例如,我的模型有一个字符串属性“MyType”,它可以有值“ABC”、“DEF”或“GHI”

然后,在视图中,我想输出大量HTML,特定于随模型传递的单个“MyType”

我知道在视图中我可以有一个helper函数,它查看Model.MyType并有一个switch语句来显示一些HTML,但是有没有更优雅的方法来实现这一点,从视图中抽象出HTML


即使我可以创建一个有开关的helper函数,但是随后调用一个cshtml文件来获得适当的HTML。我的想法有点像DisplayTemplates是如何工作的,但我不能真正使用它们,因为这意味着它将为每个字符串调用,而不是为我的特定于模型的属性调用…

好吧,首先你可以使用显示模板,只要你用
[UIHint(“Foo”)]
注释装饰你的属性。“Foo”部分对应于特定的显示模板,因此可以对不同类型的字符串使用不同的模板

不过,partials可能是您在这里的最佳选择。您可以将每个
MyType
值的HTML位以相同的名称放入部分。然后你可以打电话:

@Html.Partial(Model.MyType)
换句话说,您直接传递类型作为要使用的分部的名称。只是要小心,这些值总是对应于项目中存在的部分,否则您将开始出现异常。如果有人决定为
MyType
添加另一个值,而忽略了添加关联的部分,则您的应用程序将进入繁荣期。通过对照已知部分检查值,并仅在以下情况之一时渲染部分,可以增加一点安全性:

@if (new[] { "ABC", "DEF", "GHI" }.Contains(Model.MyType))
{
    @Html.Partial(Model.MyType)
}
那么,至少,最坏的情况是什么也没有呈现出来