Une nouvelle fenêtre s'ouvre sur le clic de actionLink
J'ai une exigence pour appeler une méthode de contrôleur à partir de l'affichage de la page. Cliquez sur le lien ci-dessous, la méthode doit être appelée.
@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice",
new { item.InvoiceNumber }, new { target = "_blank" })
la signature de la méthode est que:
public void SendPdfStatement(string InvoiceNumber)
{
InvoiceNumber = InvoiceNumber.Trim();
ObjectParameter[] parameters = new ObjectParameter[1];
parameters[0] = new ObjectParameter("InvoiceNumber", InvoiceNumber);
List<Models.Statement> list = new List<Models.Statement>();
list = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters).ToList<Models.Statement>();
var statementResult = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters);
Models.Statement statement = statementResult.SingleOrDefault();
pdfStatementController.WriteInTemplate(statement);
}
maintenant, le problème est lorsque je clique sur le lien, une fenêtre vide s'ouvre. Je sais que c'est quelque chose avec new { target = "_blank" }
. Si je passe null
à sa place ma page avec un lien devient vide. Qu'est ce que je passe ici, donc la page ma page reste comme elle est, et pas de nouvelle fenêtre vide apparaît également.
Le problème est dans votre méthode de contrôleur, pas dans ce helper html invocation. Il semble que votre méthode retourne un résultat vide. Vous devez nous montrer le code manquant. Par ailleurs, votre méthode doit être appelée
la méthode est appelée SendPdfStatement seulement dans InvoiceController. Ont mis le détail de code pour la méthode
SendPdfStatement
, dans un InvoiceController
classe. Êtes-vous êtes-vous sûr de vérifier le bon?la méthode est appelée SendPdfStatement seulement dans InvoiceController. Ont mis le détail de code pour la méthode
OriginalL'auteur 14578446 | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
Changer votre contrôleur de l'Action. La page que vous obtenez est vide parce que vous n'êtes pas de retourner quoi que ce soit. Ne
EDIT:
Ou vous devez utiliser AJAX pour que votre page n'est pas rechargée et vous n'avez pas à retourner quelque chose à partir de votre méthode. Lire ici http://www.asp.net/mvc/overview/older-versions-1/contact-manager/iteration-7-add-ajax-functionality-cs.
Vous n'. Vous êtes de retour d'une Vue, de sorte que quelque chose peut être affiché sur la page. Vous pouvez faire
return View('pathhere');
de mon point de vue original nécessite un modèle d'entrée qui ne sera pas disponible ici, à l'intérieur de "SendPdfStatement"
voir mon edit. Vous devez utiliser AJAX pour ne pas recharger la page. Alors votre lien aura jquery appel de fonction
'onclick="savePdf();"'
qui va alors appeler leHttpPost
contrôleur de l'actionOriginalL'auteur bobek
Essayer Cette
OriginalL'auteur sohaib
Cela fonctionne pour MVC5 ainsi
OriginalL'auteur Mohit P Mathew
Tout d'abord
Est utilisé pour ouvrir hyperreferenced ressource dans une nouvelle fenêtre du navigateur, donc si vous ne voulez pas la nouvelle fenêtre - pourquoi voudriez-vous mettre en place ? 🙂
Deuxièmement, regardez la ActionLink méthode d'assistance (description, j'ai pris à partir de la question référencé ci-dessous):
prendre un coup d'oeil à HTML.ActionLink méthode
Je suppose que vous frappez à la mauvaise méthode de surcharge si vous obtenez des erreurs. Si vous remplacez htmlArguments avec des valeurs null, vous devriez être bon d'aller, mais en tant que votre méthode VOID (rien), vous obtiendrez une page vide (que voulez-vous attendre 🙂 ? )
Pour annuler le défaut mécanisme de navigation vous pouvez implémenter jquery simple règle :
vous pouvez utiliser javascript (j'ai mis à jour ma réponse), mais il serait bon de laisser l'utilisateur de savoir si son action réussir ou pas
OriginalL'auteur torm
Donc, fondamentalement, ce dernier paramètre est votre attributs html, si vous n'en avez pas besoin pour ouvrir dans une nouvelle fenêtre...c'est le seul attribut dans il donc juste de passer la valeur null pour le paramètre entier.
OriginalL'auteur Tutan Ramen
essayer de passer
_self
au lieu de_blank
ou alternativement de passagenull
au lieu de ,new { target = "_blank" }
c'est à dire
@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", new { item.InvoiceNumber }, null )
ou de laisser sur le
new { target = "_blank" }
tous ensembleOriginalL'auteur Brian