web-dev-qa-db-fra.com

Afficher le résultat dans la même vue après soumission MVC

J'ai un formulaire avec deux champs qui passera des valeurs à une procédure stockée. La procédure stockée renverra 0 ou 1.

Si 0, l'utilisateur n'est pas éligible pour voir les données. Si 1, il est. Ensuite, je veux montrer les détails dans la même page que j'ai soumise. J'utilise le rasoir MVC 4.

S'il vous plaît donner une idée comment y parvenir. Je suis nouveau à MVC.

5
Sachu

Vous pouvez utiliser javascript ajax pour poster votre de. en utilisant cela, vous pouvez obtenir les données via ajax sans actualiser la page, puis utiliser vos résultats ajax pour afficher les données.

Code HTML

<form id="MyForm"  method="post">
<input type="text" name="value1"/>
<input type="text" name="value2"/>
<input type="submit" name="Submit" value="Submit" />
</form>

Code du contrôleur

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult MyAction(MyViewModel model)
    {
        var result = ResultOfStoredPrcedure();
        return Content(result);
    }
}

code javascript

<script >

 $(document).ready(function () {

    $('#MyForm').submit(function (e) {

        var formData = new FormData(this);

        $.ajax({
            url: '@Url.Action("MyAction", "Home")',
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: formData,
            contentType: false,
            processData: false,
            success: function (result) {
             // here in result you will get your data
            },
            error: function (result) {

            }
        });
        e.preventDefault();
    });
});
</script>
6
Firoz Jafri

Si vous le souhaitez, vous pouvez utiliser MVC Ajax Helper et utiliser Ajax.BeginForm () ou utiliser javascript et un formulaire standard pour publier. Quel que soit le choix, dans votre action, il vous suffit de renvoyer une vue.

Si vous utilisez Ajax.BeginForm (), vous pouvez spécifier un élément par son ID à mettre à jour. En renvoyant une vue, vous avez un meilleur contrôle sur ce qui est renvoyé par rapport au contenu renvoyé.

@using (Ajax.BeginForm("MyActionHome", "Home", new AjaxOptions {HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "resultArea"}))
{
    <input type="submit" name="Submit" value="Submit" /><
}

<div id="resultArea">
</div>   

Ce formulaire vous permet de spécifier l'action, le contrôleur, les options et si vous souhaitez envoyer des arguments supplémentaires. Nous avons également spécifié le TargetId que nous souhaitons mettre à jour, dans ce cas, le 'resultArea'. 

Si vous avez besoin d'un code client à exécuter, vous pouvez également utiliser l'option OnComplete et fournir une fonction JavaScript.

[HttpPost]
public ActionResult PurchaseUnit()
{
    return View("_ResultPartial",);
}

Nous avons ici un contrôleur de base qui renvoie un PartialView. Cette Partielle sera ensuite insérée dans l’ID spécifié et sera remplacée, comme défini par nos options.

3
JonE

Si je vous ai bien compris, vous devez utiliser Ajax.Beginform (ou Ajax.Action). Regardez donc cette réponse, j'espère que cela vous aidera https: // stackoverflow .com/a/5410121/2115584

0
Baximilian