2012-03-30 23 views
0

の配列と予想されるように、私は次のようなクラスを持って動作しません。次のビュー:私はモデルとしてLocalizable<string>のサブクラスを渡して、このビューを表示するときHtml.Editor()ヘルパーは私のASP.NET MVC 3アプリケーションでモデル

@model dynamic 
... 
@for (int i = 0; i < VersionCount; i++) 
{ 
    ... 
    @Html.Editor(string.Format("Name[{0}].Value", i)) 
    ... 
} 

は今、文字列のテキストボックスが描画されているが、彼らは空です。 @Html.Editor(string.Format("Name[{0}].Value", i))@InputExtensions.TextBox(Html, string.Format("Name[{0}].Value", i), Model.Name[i].Value)に置き換えた場合、テキストボックスはモデルの値で正しく埋められます。しかし、Editorの代わりにTextBoxを使用することは、Tのさまざまなタイプに異なるエディタテンプレートを使用したいので、私の選択肢ではありません。だから私は間違っているか、MVCのバグですか?

+0

私はそのちょうど誤植を考えていますが、あなたは行うときあなたが忘れたエディター ']' –

+0

@Brentありがとう、私は質問を編集しました。 – SlimShaggy

+0

'Html.Editor(Name [i])'を実行するとどうなりますか –

答えて

0

属性UIHint( "MyUIHintName")を使用できます。

public class Localizable<T> 
{ 
    [UIHint("MyUIHintName")] 
    public Localization<T>[] Name { get; set; } 
    ... 
} 

次に、Views/Shared/EditorTemplates /フォルダを作成する必要があります。次はレイザービューを作成する必要があります 閲覧/共有/ EditorTemplates/MyUIHintName.cshtml例えば、あなたがすべてのタイプのためのロジックを記述することができ、このビューでは、 :

@model dynamic 

@if(ViewData.ModelMetadata.ModelType.Name=="string") 
{ 
    //Do something 
} 
@if(ViewData.ModelMetadata.ModelType.Name=="int") 
{ 
    //Do something 
} 
関連する問題