1

私の見解には次のコードがあります。

@model MyDomain.ViewModels.EditCapacityViewModel

` ....

@Html.EditorFor<Capacity, >(m => m.Capacity.NumberOfWeeks)

これは私のViewModelです - 私のモデルクラスへのストレートパススルー

public class EditCapacityViewModel
    {
        public Capacity Capacity { get; set; }
    }

私の容量モデルクラス:

[Display(Name="Number of Weeks")]
[DataType(DataType.Date)]
public virtual int NumberOfWeeks { get; set; }

上記のコードを使用すると、次のエラーが表示されます。ディクショナリに渡されたモデル項目は 'System.Int32' 型ですが、このディクショナリには 'System.String' 型のモデル項目が必要です。

EditorFor を TextBoxFor に変換すると、機能します。

これが機能しない理由がわかりません。私は何を間違っていますか?

4

1 に答える 1

1

EditorForカスタム テンプレートのない文字列に対してのみ機能します。

それを機能させるにはInt32、パスにテンプレートを作成する必要があります。~/Views/Shared/EditorTemplates/Int32.cshtml

Int32タイプのテンプレートを作成したくない場合は、TextBoxFor既に認識しているように、それを使用してください。

于 2013-06-29T00:43:28.037 に答える