Как я могу создать собственный шаблон MVC3 или помощник HTML для свойства типа KeyValuePair <string, string> - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть модель с 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>

Спасибо за любые комментарии и предложения.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Вы можете использовать свойство UIHint в своей модели, чтобы указать, какой DisplayTemplate вы хотели бы использовать, например:

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

Это будет относиться к представлению DisplayTemplate с именем «NameOfYourDisplayTemplate» при отображении MyProperty.

1 голос
/ 07 декабря 2011

В вашем классе TestModel украсьте свойство MyProperty Атрибутом DataType, например:

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

, а затем создайте свой вид как ~/Views/Shared/DisplayTemplates/KeyValuePair.cshtml

...