2011-08-03 7 views
2

J'ai une vue et une vue partielle. La mise en page pour la vue est quelque chose comme ceci:ASP.NET MVC3 Vue partielle sur HTTPPost

<html> 
... 
<div id="MainView">@RenderBody()</div> 

<!--Partial View--> 
<div id="partialView">@Html.Action("PartialViewForm", "Main")</div> 
... 
</html> 

Mon Vue partielle (nommé _Register) est quelque chose comme ceci:

@model PartialViewModel  
<div id="form"> 
@using (Html.BeginForm("PartialViewForm", "Main", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true) 
    <table > 
     <tbody> 
      <tr> 
       <td align="left">@Html.LabelFor(model => model.Name)*</td> 
       <td>@Html.EditorFor(model => model.Name)</td> 
       <td align="left">@Html.ValidationMessageFor(model => model.Name, "")</td> 
      </tr>    
      <tr> 
       <td align="left"><input type="submit" value="Go" class="submit2"/></td> 
      </tr> 

     </tbody> 
    </table> 
} 
</div> 

Dans mon MainController j'ai des méthodes comme celle-ci:

public class MainController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpGet] 
    public ActionResult PartialViewForm() 
    { 
     var partialViewModel= new PartialViewModel(); 
     return PartialView("_Register", partialViewModel); 
    } 

    [HttpPost] 
    public ActionResult PartialViewForm(PartialViewModel partialViewModel) 
    { 
     // if Validation is not successfull 
     return PartialView("_Register", partialViewModel); 

     // else 
     .... 
    } 
} 

C'est ce que je veux faire ... quand la validation échoue sur la vue partielle je veux revenir à la vue principale ... mais dans mon cas sur l'action de publication quand la validation échoue tout ce que je peux voir est le partialv iew ... il n'y a pas de contenu de la page principale. Il ya des messages sur le forum qui montrent le même genre de comportement, mais je ne suis pas en mesure de résoudre mon problème. Quelqu'un peut-il s'il vous plaît me dire comment fixer (il sera vraiment utile si vous pouvez modifier mon exemple et montrer)

Merci

Répondre

2

Je ne sais pas si je comprends tout à fait ce que vous essayez de faire, mais si ce que je pense est juste, vous devez simplement utiliser

[HttpPost] 
public ActionResult PartialViewForm(PartialViewModel partialViewModel) 
{ 
    // if Validation is not successfull 
    model = _db.getBlah(); //get the original model for the main view 
    return View("MainView", model); 

    // else 
    .... 
} 

Cependant, je pense que votre question est peut-être que vous devriez vraiment avoir votre soumission de formulaire dans votre fenêtre principale et non dans votre partielle - est juste là la partie pour rendre les éditeurs pour vos vues Créer/Modifier, etc; les données doivent être soumises à l'action de la vue principale afin qu'elle puisse créer/mettre à jour le modèle approprié.

Questions connexes