Question

Comme nous le savons tous, RenderAction() fait partie de:

  • Asp.net MVC 1 Futures ou
  • Asp.net MVC 2 Beta 2

et nous permet de rendre le résultat de l'action dans une autre vue ou une vue partielle.

Description

  1. Vous disposez d'une vue avec plusieurs vues partielles affichées à l'aide de <form> helper.
  2. Au moins deux vues partielles donnent un Html.BeginForm() probablement en utilisant form cette publication dans la vue originale.
  3. La publication n'est pas effectuée via un appel Ajax
  4. Les données de publication sont validées sur le formulaire POST.

Problème

Lorsque l'un des formulaires est envoyé, l'autre est invalide .

Quelqu'un at-il utilisé ce modèle et l'a-t-il résolu? Nous devrions en quelque sorte savoir quelle HttpVerb.Get publication a été postée et seul celui-ci doit valider ses données POST. D’autres doivent ignorer la validation ou effectuer un <=> traitement régulier des actions.

Était-ce utile?

La solution

Avoir un champ caché dans le formulaire pour indiquer lequel. Vous pouvez également faire passer un préfixe au partiel et l'ajouter à chaque élément du formulaire.

À propos des préfixes. La première consiste à avoir deux propriétés, appelées Html.RenderPartial (& Quotielle & Quot ;, Model.Data1 / 2.WithPrefix (& Quot; data1 & Quot;)).

public class FormModel
{
   public string Prefix { get; set; }
}

public class FormData
{
   public FormModel Data1 { get; set; }
   public FormModel Data2 { get; set; }
}

public ActionResult HandlePost(FormData data)
{
   if (data.Data1 != null) {} else {}
}

La deuxième manière est la même mais utilise deux paramètres d'action.

public ActionResult HandlePost(FormModel data1, FormModel data2)
{
   if (data1 != null) {} else {}
}

Dans la vue partielle que vous faites

<%= Html.TextBox(Model.Prefix + ".FormModelField", Model.FormModelField) %>

c’est-à-dire que vous définissez le nom du champ avec le préfixe transmis dans le modèle.

Bien sûr, vous pouvez modifier cela en détail.

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