2009-12-11 6 views
1

je vois qu'il existe des solutions en utilisant différents modèles de classeurs comme castl mais je ne savais pas si le classeur de base par défaut de base pris en charge les objets complexes imbriqués quand je poste un formulaire à un contrôleur.pouvez-vous poster des objets complexes de forme à contrôleur dans asp.net mvc

+0

BTW @oo, je pense que votre objet affiche null parce que vous ne pouvez pas exposer les objets enfants comme public. Avait le même problème quand j'ai effectué quelques tests il y a une minute et délibérément mis les objets de l'enfant à privé. Cela peut expliquer votre valeur nulle. – griegs

Répondre

2

Je pense que vous pouvez si je comprends votre question.

Dans le nom de mon champ, je ne place pas seulement le nom de la propriété, mais aussi l'objet. Donc, si j'ai un objet "Personne" qui contient un objet "Adresse" qui contient un champ "Etat", je l'aurais comme nom "Person.Address.State" et cela semble se résoudre très bien dans mon contrôleur .

<%= Html.TextBox("Person.Address.State", Person.Address.State.... 

Est-ce ce que vous demandez?

EDIT

Il fonctionne et est ici le code pour faire fonctionner.

namespace DoMyWork.Controllers 
{ 
    public class test 
    { 
     public string value { get; set; } 
    } 

    public class testParent 
    { 
     public test test { get; set; } 
    } 

    public class SearchController : Controller 
    { 
     public ActionResult ViewUserControl1(testParent test) 
     { 
      UpdateModel(test); 

      return View(test); 
     } 

SNIP

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DoMyWork.Controllers.testParent>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    ViewUserControl1 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>ViewUserControl1</h2> 

    <% using(Html.BeginForm()){ %> 
     <%= Html.TextBox("test.value", Model.test.value) %> 
     <input type="submit" value="sdf" /> 
    <%} %> 

</asp:Content> 
+0

Je pense que vous comprenez ma question, mais cela ne semble pas fonctionner. l'objet complexe apparaît toujours nul. . – leora

+0

Oui, je pensais que le downvote était un peu bizarre. Merci @Jay. – griegs

+0

+1 Je ne savais même pas que vous pouviez faire cela, je ne peux pas croire que j'ai manqué cela après des mois de développement. Est-ce une fonctionnalité MVC2 ou était-ce dans la version originale de MVC1? – Jay

0

J'ai eu le même problème et j'ai trouvé une question similaire qui a aidé beaucoup de gens à résoudre ceci: Complex object and model binder ASP.NET MVC, mais il n'a pas résolu mon problème.

J'ai réalisé que le problème était dû au fait que mes entrées étaient désactivées (je les désactivais avec JQuery sur document prêt) comme vous pouvez le voir ici: How do I submit disabled input in ASP.NET MVC?. À la fin, j'ai utilisé l'attribut lecture seule au lieu de désactivé.

Questions connexes