2010-04-02 6 views
1

J'ai le code suivant à mon avis, cependant, je peux voir que je n'ai pas les valeurs dans le contrôleur. Qu'est-ce qui ne va pas? De l'avis je l'ai,Comment envoyer et récupérer dans le contrôleur

<% 
    using (Html.BeginForm()) 
    {%> 
     <%=Html.TextBox("Addresses[0].Line1") %> 
     <%=Html.TextBox("Addresses[0].Line2")%> 
     <%=Html.TextBox("Addresses[1].Line1")%> 
     <%=Html.TextBox("Addresses[1].Line2")%> 

     <input type="submit" name="submitForm" value="Save products" /> 
     <% 
    } 
%> 

Mes classes sont les suivantes:

public class Customer 
{ 
    public string FirstName { get; set; } 
    public string Lastname { get; set; } 
    public List<Address> Addresses { get; set; } 
    public Customer() 
    { 
     Addresses = new List<Address>(); 
    } 
} 

public class Address 
{ 
    public int Line1 { get; set; } 
    public int Line2 { get; set; } 
} 

Mon contrôleur comme suit:

public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(Customer customer) 
    { 
     return View(); 
    } 

Répondre

0

Le paramètre pour votre ActionResult est nommé client, de sorte que le Le classeur par défaut recherchera ce nom dans le formulaire par défaut. Je crois que si vous modifiez votre code à ce qui suit, il devrait le ramasser:

<%=Html.TextBox("customer.Addresses[0].Line1") %> 
    <%=Html.TextBox("customer.Addresses[0].Line2")%> 
    <%=Html.TextBox("customer.Addresses[1].Line1")%> 
    <%=Html.TextBox("customer.Addresses[1].Line2")%> 
0

Vérifiez que votre vue est liée au modèle client.

En outre, lors de l'affichage de la page Web contenant le formulaire, affichez la source générée par la vue pour voir si les champs sont correctement nommés.

Enfin, si aucune des aide ci-dessus, modifiez le paramètre dans votre action Index comme ceci:

public ActionResult Index(FormCollection form) 

vous pouvez utiliser le débogueur pour inspecter l'objet FormCollection qui est passé pour voir exactement ce que La vue vous envoie.

+0

avec formulaire Je peux voir que les données sont envoyées au contrôleur. Je ne veux pas utiliser formcollection car les zones de texte sont créées et supprimées dynamiquement. N'y a-t-il pas d'autre moyen de le faire? – learning

+0

les valeurs seront créées dynamiquement, formcollection ne reste pas la meilleure option dans ce cas je suppose? – learning

Questions connexes