2

MVC RC 2のドキュメントには、次のものがあります。

式に配列またはコレクションインデックスが含まれている場合、入力要素をレンダリングする式ベースのヘルパーは正しい名前属性を生成します。たとえば、リストの最初の注文に対してHtml.EditorFor(m => m.Orders [i])によってレンダリングされるname属性の値は、Orders[0]になります。

C#ビューコードの例をリンクしたい人はいますか(投稿時に結果をモデルにバインドできるリストを使用)?

参考までに、次のコードを使用して、モデルがラウンドトリップで正しくバインドされることを確認します。変更が可能なビューを表示し、フォームの送信時に編集されたデータを含むビューを表示するだけです。

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        var myStudents = new List<Student>();

        myStudents.Add(new Student { Name = "Harry" });
        myStudents.Add(new Student { Name = "Tom" });
        myStudents.Add(new Student { Name = "Richard" });
        var myClass = new Classroom {Students = myStudents};

        return View(myClass); // EditorFor()
    }

    [HttpPost]
    public ActionResult Index( Classroom myClass)  
    {
        return View("IndexPost", myClass); // DisplayFor()
    }
4

1 に答える 1

1

このコード:

<% for (int count = 0; count < Model.Students.Count; count++ )
   {                                              %><%= 
      Html.EditorFor(m => m.Students[count])      %><%
   } 
%>

この出力をレンダリングしました:

<input class="text-box single-line" id="Students_0__Name" name="Students[0].Name" type="text" value="Harry" />
<input class="text-box single-line" id="Students_1__Name" name="Students[1].Name" type="text" value="Tom" />
<input class="text-box single-line" id="Students_2__Name" name="Students[2].Name" type="text" value="Richard" />

そして、私がコンテンツを投稿したとき、表示は次のようになりました(Student.ascxがあるため):

<table>
    <tr><td><span>Harry</span> </td></tr>
    <tr><td><span>Tom</span> </td></tr>
    <tr><td><span>Richard</span> </td></tr>
</table>

しかし、それだけです(私は思います)。次の質問は、これらのname=""タグを取り除く方法です。

于 2010-02-22T20:11:56.043 に答える