MVC4 Passant Objet Complexe à partir de la Vue du Contrôleur, nouveau point de Vue n'est pas rendu

Je suis très nouveau pour MVC et ont rencontré ce problème lors de la tentative de port d'un site existant pour MVC4.

Nous sommes à l'aide de modèles où une grande partie des données est peuplée par des appels de service, alors, évidemment, nous aimerions que les appels à un minimum. Le problème est que lorsque j'essaie de passer le modèle vers le contrôleur, le complexe des objets dans le modèle invariablement deviennent nuls. J'ai été en mesure de stocker les données sur un appel vers le contrôleur à l'aide d'ajax; cependant, j'ai besoin de l'action de retour une nouvelle vue, et après la fin de l'action, le code de la vue exécute, mais il n'y a pas de redirection (qui je crois est le point d'ajax, je pense que ce que je demande, c'est une solution qui va persister les données de la même manière mais en fait de redirection).

Voici mon modèle:

public class DistributionModel
{
    public string typeOfDistribution { get; set; }
    public Document document { get; set; }
    public string thumbnailUrl { get; set; }
    public MergeFieldModel mergeFields { get; set; }
}

public class MergeFieldModel
{
    public MergeFields documentMergeFields { get; set; }
}

Ici, c'est le contrôleur de l'action, je suis en utilisant:

        public ActionResult Index(DistributionModel distributionModel)
    {
        distributionModel.mergeFields = new MergeFieldModel() { documentMergeFields = MergeFieldsHelper.GetDocumentMergeFields(distributionModel.document.Id) };
        return View("Index", distributionModel);
    }

J'ai essayé à l'aide d'un [email protected]("l'Indice", le Modèle) au lieu du bouton dans le bloc ci-dessous pour appeler le contrôleur et effectuer la redirection (redirection lui-même n'a fonctionné, mais j'ai ensuite eu à effectuer un autre appel de service dans le contrôleur pour récupérer le même document que je travaillais avec de l'appel de la vue) parce que l'objet Document dans le modèle de cesse de revenir comme NULLE pour le contrôleur.

Ici est la partie de la vue qui est appeler le contrôleur et retourne en fait le modèle complet: je crois que ce que je cherche, c'est un moyen d'atteindre cet objectif sans ajax afin que je puisse obtenir la redirection vers la Distribution/Index page (c'est tiré de Distribution/DocumentDetails page)

        <button id="EmailDistribution" data-corners="false" data-theme="a">EMAIL</button>

         $('#EmailDistribution').click(function () {
              var model = @Html.Raw(Json.Encode(Model));
              $.ajax({
              url: '@Url.Action("Index", "Distribution")',
              type: 'POST',
              contentType: 'application/json; charset=utf-8',
              data: JSON.stringify(model),     
              processData: false,                 
              });                
         });

Grâce, toute aide serait très appréciée.

Pourquoi ne pouvez-vous juste return RedirectToAction("Index", distributionModel); en tant que dernière ligne de Distribution/DocumentDetails action?
Le DocumentDetails action renvoie la DocumentDetails vue. En outre, j'ai essayé de faire un RedirectToAction à partir de l'une des méthodes de contrôleur, et trouvé qu'il a passé l'objet d'un Document à l'autre d'action NULLE.

OriginalL'auteur gutsmania | 2012-11-09