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 回答