2011-12-07 6 views
0

コントローラから渡された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を変更して、[HiddenInput(Display=true)]のように表示されるようにNameが表示されますか?

私のアプリケーションでは、ロールタイプごとに新しいモデルを作成することはできません。Model自体は同じです。最善のアプローチは何ですか?私は無駄に以下を試した。私はViewModelMetaDataをチェックすると

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

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

    return result; 
} 

、それは私が、コントローラで行われた変更はありません。これを行う良い方法は何ですか?私は人々がModelMetaDataProviderのサブクラスを作成するサンプルを読みましたが、私はそれがまさに私が必要とするものではないと思っています。

ありがとうございます

+0

あなたはこれを行う方法を思いついた。私は同じことをやろうとしていた。たぶん私は賞金を追加する必要があります。 – Jim

答えて

0

遅くなりましたが、こちらは別ですが?私の最後の仕事では、EditorForModel()ヘルパー用の独自のテンプレートを作成しました。それらのテンプレートでは、パーミッションをチェックしてからラベルや入力を行うことができます。ちょっと思った。ちょうどこのポストを見て、モデルメタデータの詳細を探していたので、IDはコメントを残したと思った:)

関連する問題