コレクションをモデルにバインドする際に問題があります。このリンクをたどって、チェックボックスのリストを作成しました。提供するコードの量はわかりませんが、私のビューには次のモデルがあります
Public class Model1{
public string param1{get; set;}
public string param2{get; set;}
}
Public class Model2{
public string param1{get; set;}
public string param2{get; set;}
}
Public class Model3: Model2{
public bool chk {get; set;}
public list<string> param{get; set;}
public Model3()
{
param = new List<string>(){"one", "two", "three"};
}
}
public class superModel{
public Model1 first{get; set;}
public IEnumerable<Model2> second{get; set;}
public List<Model3> third{get; set;}
}
私のコントローラーでは、パラメーター3番目を次のように定義しました
third = AnEnumerableList.Select( e=> new Model3{chk=false, param1 = e.Param, param2 = e.Param1}).ToList();
私の見解では、すべてのクラス モデルを保持するスーパーモデルを渡します。次のようなチェックボックスを作成します。
for(int i=0; i<Model.third.Count; i++){
@Html.CheckBoxFor(m => m.third[i].chk, new {onchange="test()"})
@Html.HiddenFor(m => m.third[i].param)
@Html.HiddenFor(m => m.third[i].param1)
@Html.HiddenFor(m => m.third[i].param2)
}
JavaScriptは次のようになります
function test(){
alert('@Model.third[0].chk')
}
生成されたソースコードを見ると、すべて問題ないように見えますが、チェックボックスがオンになっているかどうかに関係なく、javascript コードは常に false を返します。また、ビュー フォームが送信されると、ビュー全体が表示されません。代わりに、最初に選択したチェックボックスの名前を持つ部分ビューのようになります。このコレクションで何も選択されていない場合、返されるビューは問題なく送信されます。コードをデバッグしようとしましたが、プロセス中に何も壊れません。
私はこの問題を十分に分離できていないかもしれませんが、これは私ができる限りのことです...