我有一个包含3个属性KeyValuePair
的模型public class TestModel {
public KeyValuePair<string,string> MyProperty{ get; set; }
}
我的控制器代码如下,
public ActionResult Index() {
var model = new TestModel {MyProperty= new KeyValuePair<string, string>("Color", "Blue")};
return View(model);
}
如果我使用以下Razor代码,我的结果就不是我想要的了。
@model TestModel
@Html.LabelFor(m => m.MyProperty)
@Html.DisplayFor(m => m.MyProperty)
我的观点最终呈现:
myProperty的 键 颜色 值 蓝色
我想创建自己的帮助器或模板来覆盖此功能。我试图在Views \ Shared \ DisplayTemplates中创建一个自定义模板,如下所示,但它没有被选中。
@model KeyValuePair<string,string>
<label>This should show up</label>
感谢您提出任何意见/建议。
答案 0 :(得分:2)
您应该可以使用模型中的UIHint Property来指定要使用的DisplayTemplate,例如:
public class TestModel
{
[UIHint("NameOfYourDisplayTemplate")]
public KeyValuePair<string,string> MyProperty{ get; set; }
}
在渲染MyProperty时,这将引用名为“NameOfYourDisplayTemplate”的DisplayTemplate视图。
答案 1 :(得分:1)
在TestModel
类中使用DataType属性修饰MyProperty
属性,例如:
[DataType("KeyValuePair")]
public class TestModel {
public KeyValuePair<string,string> MyProperty{ get; set; }
}
然后将您的视图创建为~/Views/Shared/DisplayTemplates/KeyValuePair.cshtml