我正在尝试创建一个简单的Edit页面,它将从控制器传递一个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
的子类的示例,但我不认为这正是我需要的,或者我只是没有得到它。
谢谢
答案 0 :(得分:0)
迟到了......但是这里有另外一种选择吗?在我上一份工作中,我们为EditorForModel()助手制作了自己的模板......在那些你可以让它检查权限然后制作标签或输入。只是一个想法..刚刚发现这篇文章寻找关于modelmetadata的更多信息所以想通过id发表评论:)