我想創建一個簡單的編輯頁面,它將從控制器傳遞一個ViewModel。目前,ViewModel
裝飾了一些屬性,Edit.cshtml
工作正常,簡單的@Html.EditorForModel()
和一個提交按鈕。使用ModelMetaData的ASP.Net MVC3動態表單
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;
}
當我在View
檢查ModelMetaData
,它沒有我在控制器中所做的更改。什麼是這樣做的好方法?我已經閱讀了人們創建ModelMetaDataProvider
的子類的示例,但我不認爲這正是我需要的,或者我可能不知道。
謝謝
你有想出辦法做到這一點。我期待着做同樣的事情。也許我應該加一個賞金。 – Jim