クラスCreateActivityViewModel
がViewに渡されます。ビューからコントローラへ2次元の `List`を送信できません
public class CreateActivityViewModel
{
public List<List<int>> SelectedDepartmentIds { get; set; }
...
}
、:
<div class="form-group">
@Html.Label("报名范围", htmlAttributes: new {@class = "col-xs-12"})
<div>
<button id="repeat" type="button">增加单位范围</button>
</div>
@for (var i = 0; i < Model.MaxDepartmentLevel; i++)
{
<div class="col-xs-6">
@if (i == 0)
{
@Html.Label((i + 1) + "级单位", htmlAttributes: new {@class = "control-label col-md-2"})
@Html.DropDownListFor(x => x.SelectedDepartmentIds[0][i], Model.Departments,
"请选择单位", new {@class = "form-control department"})
}
else
{
@Html.Label((1 + i) + "级单位", htmlAttributes: new {@class = "control-label col-md-2"})
@Html.DropDownListFor(x => x.SelectedDepartmentIds[0][i], Enumerable.Empty<SelectListItem>(),
"所有单位", new {@class = "form-control department"})
}
</div>
}
</div>
ここx => x.SelectedDepartmentIds[0][i]
は、サーバーに戻って渡すことができない2 DIMENTION List
です。デバッグ時にcreateActivityViewModel.SelectedDepartmentIds=null
。ただし、サーバーに渡しているかを確認するクローム開発ツールを使用して、私は提出しないSelectedDepartmentIds
を見た:
は、実際には、私は他の場所でほぼ同じ作業を試してみましたが、私が思う唯一の違いは、ということです成功の仕事は1つの次元List
を通過し、今は2次元です。 ASP.NETは2次元リストのバインディングをサポートしていませんか?
'Create'アクションメソッドの署名を表示できますか? 'Content-Type'リクエストヘッダも表示できますか? –
@DarinDimitrovありがとう!インスピレーションを受けて、私は 'Create'アクションシグネチャをチェックし、' Bind(Include = ...) 'にそのプロパティを追加するのを忘れていました。 – guo
あなたは '[Bind]'属性を持たないようにビューモデルを使用しています –