2009-06-05 9 views
0

私はMVCの問題に悩まされています。C#MVC:オプションのViewModelで表示する(データは必ずしも表示されず、必要ではない)

私は、www.example.com/registerが到達登録ビューを持っている。このような何か:

<form id="registrationform" method="post"> 
<fieldset> 
    <label for="emailaddress">Email</label> 
    <input id="emailaddress" name="emailaddress" type="text" /> 
    //more inputs etc. 
</fieldset> 
</form>  

今、私は人々が他の人を招待することができますので、私は私のコントローラの登録にチェックしていますinviteパラメータのメソッド(www.example.com/register?invite = 1234)。 inviteパラメータが空でない場合、データベース内で検索して、関連する「招待」ユーザを取得します。それはすべて正常に動作します。

問題:データベースからのデータで入力を事前入力したいとします。私はすでにデータを持っていますが、MVCビューに入れるための最良の方法はわかりませんし、すでに入力されている入力を無効にすることもできます。ビューが定期的に空である必要があることを念頭に置いてください(私はDRYに違反する異なるビューを使用したくありません)。

ありがとうございました:)

答えて

2

:あなたのビューで

public class RegistrationViewModel 
{ 
    public bool Invited; 

    /* 
    * Fields for prepopulating inputs 
    */ 
} 

<%= Html.TextBox("email", null, Model.Invited ? new { @readonly = "readonly"} : null) %> 

または

<%= Html.TextBox("email", null, Model.Invited ? new { @disabled = "disabled"} : null) %> 
+0

Html.Textboxを使用しての代わりに、直接<入力を書く上の任意のパフォーマンスへの影響があります...など? – Alex

+0

絶対にありません。可能であればHtml.Textboxを使用してください –

+0

直接タグに相当するHTMLの利点は何ですか?推論を理解しようとするだけです。ありがとうございました:) – Alex

3

私はあなたがのViewModelを作成し、表示するデータがあるか、全くDBからあらかじめ入力来ていないという事実を全く知らない持っていることを示唆しています。

あなたがデータを事前入力している場合は...その後、必要なデータを使用してのViewModelを埋める(および事前に設定来ている入力を無効にする)

あなたがゼロからスタートしている場合...空/デフォルトのデータであなたのViewModelを埋めます

どちらの場合でも、ビューはフォームを表示し、渡されたViewModelに基づいてさまざまなテキストボックスやその他の入力にデフォルトデータを設定します。あなたのビューモデルで

関連する問題