ASP.NET MVC 2 RC: Comment utiliser le EditorFor pour rendre les attributs nom correct pour une liste <>?

StackOverflow https://stackoverflow.com/questions/2307667

Question

Dans le MVC RC 2 docs , on trouve:

  

Aides basées sur des expressions qui rendent les éléments d'entrée génèrent des attributs nom correct lorsque l'expression contient un index de tableau ou d'une collection. Par exemple, la valeur de l'attribut name rendu par Html.EditorFor (m => m.Orders [i]) pour le premier ordre dans une liste seraient commandes [0].

Quelqu'un veut lier un exemple du code C # vue (à l'aide d'une liste où le résultat peut se lier de nouveau au modèle à poste)?

Tout comme une référence, j'utilise le code suivant pour vérifier le modèle se fixe correctement voyage autour. Il montre simplement vue qui permet de changer, puis affiche une vue avec les données éditées sur présentation du formulaire.

[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()
    }
Était-ce utile?

La solution

Ce code:

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

Rendus cette sortie:

<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" />

Et quand je a publié le contenu, l'écran est ce (parce que j'ai 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>

Mais c'est (je pense). La question suivante est de savoir comment se débarrasser de ces name = « » tags.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top