0


0

私はコントローラのようなアクションを得ました

パブリッククラス質問{public int Id {get; set;};パブリック文字列質問{get; set;}パブリック文字列Answer {get; set;} }}

public ActionResult Questions(){return View(GetQuestions());} }

public ActionResult SaveAnswers(回答を一覧表示){... }

ビューは次のようになります。

<%for(int i = 0; i <Model.Count; i){%> <%= Html.Hidden(i.ToString() ".Id")%> <%= Model [i] .Question%> <%= Html.TextBox(i.ToString() ".Answer")%> <%}%>

明らかにこのビューは機能しません。 ビュー内のリストにアクセスできない。

これに関するドキュメントも古くなっています。ベータ版で変更されたモデル結合リストに関する機能はたくさんあります。

3 Answer


0


https://stackoverflow.com/questions/711184/asp-net-mvc-example-of-editing-multiple-child-records/[これ]および https://stackoverflow.com/questions/711184/asp-net-mvc-example-of-editing-multiple-child-records/[この質問]。  http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx[このブログ投稿]

*編集:*ビュー内のモデルへのアクセスに関して。 次の属性で宣言したことを確認していますか?

<%@ Page Language = "C#" Inherits = "System.Web.Mvc.ViewPage>"%>
//Assuming the GetQuestions() method returns a list of question objects.


0


Scott Hanselmanの投稿がおそらくその答えを含んでいると思います。 ただし、投稿 `+ …​ 0.Answer = answer …​ +`で返すことにより、匿名オブジェクトへの参照を表示しようとしています。

代わりに、私はあなたのフィールドを `回答を参照している回答の一覧表示[index]に結びつけることを信じるべきです。

以下を試してください。

<% for (int i = 0; i < Model.Count; i++) { %>

  <%= Html.Hidden("answer["+i.ToString() + "].Id", Model["+i.ToString() + "].Id) %>
  <%= Model[i].Question %>
  <%= Html.TextBox("answer["+i.ToString() + "].Answer", Model["+i.ToString() + "].Answer) %>

<% } %>

リチャード


0


答えは、HTMLヘルパーを使用しないことです。

<%for(int i = 0; i <Model.Count; i){%> <%}%>

あまりきれいではありませんが、動作します。 重要なことは、名前とIDは異なる必要があるということです。 名前には "["、 "]"を含めることができますが、idには設定できません。