増分解DropDownListFor Binding?
-
23-09-2019 - |
質問
を使用してい 増分解のためのオブジェクトのコレクション です。すべての動作、ダンディを除きを利用する必要がDropDownListFor.多くの 関するご質問合、ドロップダウン 選択の値が正しくでは、微細なった。しかし私は不明であると考えられるのHttpPost行動私のコントローラです。こちらは自分のコード:
モデル
public class WorkRequestList
{
public WorkRequest[] Requests { get; set; }
public Vehicle[] Vehicles { get; set; }
}
眺望
<% using (Html.BeginForm()) {%>
<% for (var i = 0; i < Model.Requests.Count(); i++) { %>
<%=Html.DropDownListFor(x => x.Requests[i].AssignedTo,new SelectList(Model.Vehicles,"Id","Name",Model.Requests[i].AssignedTo.Id)) %>
<%}%>
<%=Html.SubmitButton("TopSubmit","Submit") %>
<%}%>
掲載行為
[HttpPost]
public ActionResult Schedule(WorkRequestList form)
{
//what goes here?
}
のドロップダウンリストを取得すれば、も前だけです。がドキュメント形式です。います。AssignedToはnullになります。思想の車番が掲載後どこかで見たような気がどうやっていけばいいですか?る先進的なループを通じて Request
マジックの文字列:
var id = Request["Requests[" + i + "].AssignedTo"];
解決
:私は、サブオブジェクトが明示的にmodelbinderもしなくてもバインドされ得ることができなかったとして、
ここでは、別の方法であります
あなたの応答のための新しいクラスを定義します:
public class WorkRequestResponse
{
public int AssignedTo { get; set; }
}
ページ変更で、それのように、次のとおりです。(私はWorkRequestにリクエストを変更)
<% for (var i = 0; i < Model.WorkRequest.Count(); i++)
{ %>
<%=Html.DropDownListFor(x => x.WorkRequest[i].AssignedTo, new SelectList(Model.Vehicles, "Id", "Name", Model.WorkRequest[i].AssignedTo.Id))%>
<%}%>
あなたのコントローラのバインドで次のように:
public ActionResult Index([Bind(Prefix = "WorkRequest")]List<WorkRequestResponse> AssignedTo)
{
// AssignedTo is now populated
WorkRequestList.WorkRequests = magic_assign_function(AssignedTo);
// manual model validation etc....
}
これはあまりにも私を悩ませてきたように、私は、より直接的なルートがあるかどうかを確認するために熱心になります。
所属していません StackOverflow