RazorとC#でASP.NETMVC3を使用しています。私はある種のフォームビルダーを作成しているので、次のオブジェクトのコレクションを持つモデルがあります。
public class MyFormField
{
public string Name { get; set; }
public string Value { get; set; }
public MyFormType Type { get; set; }
}
MyFormTypeは、フォームフィールドがチェックボックス、テキストボックス、ファイルアップロードなどのいずれであるかを示す列挙型です。私のエディターテンプレートは次のようになります(コメントを参照):
〜/ Views / EditorTemplates / MyFormField.cshtml
@model MyFormField
@{
switch (Model.Type)
{
case MyFormType.Textbox:
@Html.TextBoxFor(m => m.Value)
case MyFormType.Checkbox:
@Html.CheckBoxFor(m => m.Value) // This does not work!
}
}
CheckBoxFor()のラムダ式でをキャスト/ブール値に変換しようとしm.Value
ましたが、エラーが発生しました。チェックボックス入力を手動で作成するだけですが、CheckBoxFor()は、複製できない2つのことを実行しているようです。
- チェックボックスによって何らかの形で入力される非表示の入力を作成します。これは、モデルバインダーが取得するもののようです。
- モデルバインダーが値を適切なプロパティに取得できるように、オブジェクトから名前を生成します。
文字列でCheckBoxFor()を使用する方法、またはその機能を手動で複製してこれを機能させる方法を知っている人はいますか?