ASP.Net MVC3 Динамическая форма с использованием ModelMetaData - PullRequest
0 голосов
/ 08 декабря 2011

Я пытаюсь создать простую страницу редактирования, которая будет принимать ViewModel, переданную из контроллера. В настоящее время ViewModel имеет некоторые атрибуты, а Edit.cshtml отлично работает с простым @Html.EditorForModel() и кнопкой отправки.

public class MySimpleViewModel {
    [ScaffoldColumn(false)]
    Guid ID { get; set; }

    [Required]
    string Name { get; set; }
}

Мне нужно изменить ModelMetaData в зависимости от роли пользователя и сделать некоторые свойства доступными только для чтения. Можно ли изменить ModelMetaData в контроллере так, чтобы Name выглядел так, как если бы мы дали атрибут [HiddenInput(Display=true)]?

Для моего приложения невозможно создать новую модель для каждого типа роли, а сам Model одинаков. Каков наилучший подход? Я пробовал следующее безрезультатно.

public ViewResult Edit(Guid id) {
    var result = View( Service.GetByID( id ) );

    // Alter the result.ViewData.ModelMetaData here???

    return result;
}

Когда я проверяю ModelMetaData в View, в нем нет изменений, которые я сделал в контроллере. Какой хороший способ сделать это? Я читал примеры, где люди создают подкласс ModelMetaDataProvider, но я не думаю, что это именно то, что мне нужно, или, может быть, я просто не понимаю.

Спасибо

1 Ответ

0 голосов
/ 14 мая 2012

Поздно .. но есть альтернатива?На моей последней работе мы создали свои собственные шаблоны для помощников EditorForModel () ... и в тех, которые вы можете иметь, проверяют разрешения, а затем либо делают метку, либо вводят данные.Просто мысль ... только что наткнулся на этот пост в поисках дополнительной информации о modelmetadata, поэтому фигурный id оставил комментарий:)

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