2011-12-07 74 views
2

我已經有了一個模型3個屬性是類型的類型KeyValuePair <字符串,字符串>的屬性定製MVC3的模板或HTML幫助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> 

感謝您的任何意見和建議。

+1

你的看法是什麼叫你的模板? –

回答

2

您應該能夠使用UIHint Property在模型中指定你想使用,例如其中DisplayTemplate:

public class TestModel 
{ 
    [UIHint("NameOfYourDisplayTemplate")] 
    public KeyValuePair<string,string> MyProperty{ get; set; } 
} 

這將參考DisplayTemplate查看名爲「NameOfYourDisplayTemplate」,渲染時myProperty的。

+0

這對我有效。感謝Rionmonster –

1

在你TestModel類裝飾MyProperty屬性與數據類型屬性,例如:

[DataType("KeyValuePair")] 
public class TestModel { 
    public KeyValuePair<string,string> MyProperty{ get; set; } 
} 

,然後創建爲~/Views/Shared/DisplayTemplates/KeyValuePair.cshtml