Я пытаюсь создать простую страницу редактирования, которая будет принимать 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
, но я не думаю, что это именно то, что мне нужно, или, может быть, я просто не понимаю.
Спасибо