実行時にフォームを生成しようとしています。私は(彼らはリフレクションを使用して取得することができないプロパティへの参照が必要)[ElementType]For()
メソッドが機能するように、このクラスでは、このアプローチASP.NET MVC 3動的フォーム生成
@using (Html.BeginForm()) {
@foreach (var propertyInfo in typeof(MvcApplication1.Models.LogOnModel).GetProperties()) {
if (propertyInfo.PropertyType == typeof(Boolean)) {
Html.CheckBoxFor(m => new PropertyWrapper<Boolean>(propertyInfo, Model).Property);
}
else if (propertyInfo.PropertyType == typeof(String)) {
Html.TextBoxFor(m => new PropertyWrapper<String>(propertyInfo, Model).Property);
}
...
}
}
になってしまっています。
public class PropertyWrapper<T> {
private PropertyInfo _propertyInfo;
private Object _instance;
public PropertyWrapper(PropertyInfo propertyInfo, Object instance) {
_propertyInfo = propertyInfo;
_instance = instance;
}
public T Property {
get { return (T)_propertyInfo.GetValue(_instance, null); }
set { _propertyInfo.SetValue(_instance, value, null); }
}
}
PropertyWrapper
コンストラクタのinstance
パラメータがnullであるので、私は次のエラー
System.Reflection.TargetException: Non-static method requires a target.
を取得します。何か不足していますか?これも可能ですか?
私は自動的にバインドされることを認識しませんでした。あなたがあなたのコメントを答えたら、私は受け入れます。 –
私はそれを答えに移しました。 –