Ajax.ActionLink post-ensemble du modèle à partir d'un point de vue?
J'ai un point de vue fortement typée pour un ViewModel. Est-il possible de passer toutes les données à partir d'un modèle dans la vue, de retour à l'action d'un contrôleur? Quelque chose comme cela?
@Ajax.ActionLink("(Export to Excel)", "ExportCsv", "SurveyResponse", new {
ResultsViewModel = Model }, new AjaxOptions {HttpMethod = "POST"})
Puis recueillir les données à partir de ResultsViewModel comme un paramètre à un autre contrôleur de
public ActionResult ExportCsv(ResultsViewModel resultsviewmodel)
{
}
- non, vous ne pouvez pas passer ViewModel paramètre @Ajax.ActionLink si vous souhaitez que ces POST alors vous devez soumettre le formulaire à l'aide de Html.BeginForm ou Ajax.BeginForm. OU encore, si vous voulez passer des valeurs à l'aide d'Ajax.Action de lien, puis passer chaque valeur unique de ViewModel.
Vous devez vous connecter pour publier un commentaire.
Non, vous ne pouvez pas passer toute la vue modèle comme celui-ci dans un lien d'action. Vous pourriez ne laisser passer que les
id
de ce modèle, puis de récupérer le modèle réel à l'aide de cetteid
partir de l'endroit où vous avez récupéré d'abord:Comme alternative, vous pouvez sérialiser le modèle comme un javascript littérale et ensuite l'envoyer sous forme de données JSON avec la requête AJAX:
Réussi à le faire ci-dessous fonctionne,
Contrôleur
C'est un http post, mais les données n'est pas dans la "forme des données", il est encodé dans la requête de l'URL (mais pas un http get).
Ressemble MVC convertit automatiquement les champs individuels en un seul modèle.
URL a une longueur limites, grand modèle peut échouer.
Essayez d'envoyer votre modèle Id du contrôleur et obtenir de résultat json:
Et dans le contrôleur, vous aurez:
[HttpGet]
dans le contrôleur, puisHttpMethod = "POST"
dans la vue?Je n'ai la suite. Ce genre de défaites le point de
HTTP POST
dans mon oppionion. Mais bon, il fait le travail.Mon Ajax:
Mon Contrôleur:
Mon Modèle Contraignant: