html.TextBoxFor et html.Zone de texte, l'Affichage des valeurs, le modèle dans les paramètres

Bien les gars, Besoin d'aide!

Je travaille avec asp.net mvc3 de rasoir (et je suis assez nouveau pour elle, mais fait beaucoup de formulaires web)

Ok, donc, sur le problème

Ma question tourne autour de la soumission d'un point de vue.
J'ai un modèle compliqué que de mon point de vue est basé sur (fortement typé).

Je veux retourner le modèle dans les arguments de la HttpPost méthode du contrôleur. faites essentiellement à:

public ActionResult Personal()
    {
        DataModel dataModel = new DataModel();
        FormModel model = new FormModel();
        model.candidateModel = dataModel.candidateModel;
        model.lookupModel = new LookupModel();

        return View(model);
    }

    [HttpPost]
    public ActionResult Personal(FormModel formModel)
    {
        if (ModelState.IsValid)
        {
            //stuff
        }
        return View(formModel);
    }

Maintenant...
Je vais avoir de la difficulté à obtenir des valeurs dans le formModel paramètre de la méthode post.

Cela fonctionne (ce qui signifie que je peux voir la valeur), mais il est pénible car je dois écrire exactement où il se trouve dans une chaîne de chaque champ:

@Html.TextBox("formModel.candidateModel.tblApplicant.FirstName", Model.candidateModel.tblApplicant.FirstName)

Il rend comme ceci:

<input name="formModel.candidateModel.tblApplicant.FirstName" id="formModel_candidateModel_tblApplicant_FirstName" type="text" value="Graeme"/>

Cela ne fonctionne pas:

@Html.TextBoxFor(c => c.candidateModel.tblApplicant.FirstName)

Il rend comme ceci:

<input name="candidateModel.tblApplicant.FirstName" id="candidateModel_tblApplicant_FirstName" type="text" value="Graeme"/>

Maintenant, je suis en supposant que le problème réside dans la différence de l'id de l'

Donc merci de me répondre ceci:

  1. Suis-je marcher sur le droit chemin
  2. Pourquoi ne pas textboxfor obtenir la bonne valeur/id, et comment puis-je faire obtenir la bonne valeur/id afin que je puisse le récupérer dans un POST(si c'est même le problème)?
  3. En outre, il semble que textboxfor est restrictive, de la même manière que si vous avez une date de temps, comment utilisez-vous la .toshortdate() la méthode? Cela me fait penser textboxfor n'est pas utile pour moi.

Clarification rapide:
quand je dis textboxfor n'est pas le travail, c'EST d'obtenir des valeurs quand j'ai la forme. Afin qu'elles remplissent, mais sur le POSTE /la soumission, je ne peux pas les voir dans le formModel dans les paramètres.

Un autre côté remarque:
Aucun des html helpers travail, c'est le problème. Ils n'apparaissent pas dans modelstate.


Merci à tous pour l'aide

Réponse:
html.TextBoxFor et html.Zone de texte, l'Affichage des valeurs, le modèle dans les paramètres

C'était un problème de mon point de vue, quelque part, j'ai remplacé tout le code avec l'extrait de code dans cette réponse, et cela a fonctionné.

Merci encore

Il aurait été utile si vous avez trouvé exactement ce que le problème a été... Ou afficher le code de votre modèle d'origine, de sorte que nous avons pu comparer et d'expliquer les différences. Ne peut pas vraiment up1 la réponse parce que votre problème n'a pas vraiment été identifiés.

OriginalL'auteur MrJD | 2011-11-19