2011-07-26 9 views
1

MVC3アプリケーションでユーザーコントロールを作成しています。私の見解モデルは以下のようになります。ASP.NET MVC3 Html.Editorオブジェクトのプロパティとプロパティ

public class MyViewModel 
{ 
    public object Value { get; set; } 
} 

私は[DataType]属性を使用することはできませんので、Valueプロパティはint型、文字列またはブール値である可能性があります。

私は私のビューモデルを作成する場合:

<%: Html.EditorFor(p => p.Value) %> 

型テキストボックスのHTML入力をレンダリングする必要があります。

var viewModel = new MyViewModel { Value = "" }; 

または

var viewModel = new MyViewModel { Value = 1 }; 

を、私はこのコードがあることを前提としています。残念ながら、何もレンダリングされていません。

bool値を使用するか、空でない文字列を使用すると、すべて正常に動作します。私はいくつかの研究をした

Value property of type bool

、今の私は解決策が見つかりませんでした:

var viewModel = new MyViewModel { Value = true }; 

Html.EditorForは、チェックボックスの入力をレンダリングする:ここでは例です。

答えて

1

は、私が使用

<%: Html.EditorFor(p => p.Value) %> 

、すべてが素晴らしい作品!テキストボックスは、空の文字列またはint値としてレンダリングされます。式p => p.Valueで何が問題になっていますか?

1

ない直接の回答ではなく、あなたは自分のViewModelは一般的なことができます:

public class MyViewModel<T> 
{ 
    public T Value { get; set; } 
} 

この方法では、HTMLヘルパーメソッドが解決することができるタイプの値が何であるかを正確にコンパイル時に、そして正確にエディタにレンダリングする。

<%: Html.Editor("Value") %> 

の代わりに::

+1

これは単純化された例です。実際のアプリでは、私はジェネリックタイプを持っています - あなたが言ったように。しかし、私は 'MyViewModel'のリストを作成できる必要があります。ご存知のようにジェネリック型のリストを作成することはできませんので、typeオブジェクトのプロパティ 'Value'を持つインタフェース(' IMyViewModel')を作成しました。 – krolik

関連する問題