Объединение UIhint и дополнительных метаданных в приложении MVC3? - PullRequest
2 голосов
/ 14 февраля 2012

Я создаю атрибут, который буду использовать для предоставления дополнительной информации о единице измерения свойства в MVC 3 ViewModel.Это следует за мной , спрашивающим о наилучшем способе достижения этой цели.

Я создал атрибут UnitOfMeasure, который передает дополнительную информацию в шаблон строки через метаданные AdditionalValues.В идеале я хотел бы создать шаблон редактора для UnitOfMeasure, а не добавлять его в шаблон строкового редактора.

Есть ли какой-либо способ сообщить поставщику пользовательских метаданных изменить выбранный шаблон?По сути, если он видит атрибут UnitOfMeasure в свойстве, то я бы хотел также автоматически добавить UiHint ("UnitOfMeasure") за кулисы.Таким образом, мне не нужно было бы добавлять код для моего помощника UnitOfMeasure в шаблоне редактора строк.

Следует отметить, что я не хочу использовать параметры управления UiHint (если это не единственный вариант)

Спасибо

1 Ответ

5 голосов
/ 14 февраля 2012

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

public class UnitOfMeasureAttribute : UIHintAttribute, IMetadataAware
{
    public UnitOfMeasure(): base("foo")
    {

    }

    public void OnMetadataCreated(ModelMetadata metadata)
    {
        throw new NotImplementedException();
    }
}

и затем:

public class MyViewModel
{
    [UnitOfMeasure]
    public string Foo { get; set; }
}

или

public class MyViewModel
{
    public string Foo { get; set; }
}

и в обоих случаях в представлении:

@Html.EditorFor(x => x.Foo)

в первом случае, очевидно, будет использоваться пользовательский шаблон ~/Views/Shared/EditorTemplates/foo.cshtml, тогда как во втором - шаблон строки по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...