Question

J'ai besoin d'ouvrir une nouvelle fenêtre et de définir le contenu sur tout ce qui a été déterminé par un message sur mon contrôleur MVC lorsqu'un lien est cliqué. Voici comment je le fais actuellement.

jQuery.ajax({
        type: "POST",
        url: '/controller/mycontroller',
        data: { mydata: data },
        error: function (xhr, status, error) {
        },
        success: function (response) {
            win_detail = window.open('', 'name');
            win_detail.document.write(response);
        }
    });

Le contrôleur traite actuellement ce que HTML devrait être sur la page et le met dans lebag View. Cela met également ce que la réponse. ContentType devrait être dans lebag View. My MyController.cshtml J'ai quelque chose comme ça.

@{
Response.ContentType = ViewBag.ContentType;
}

<head></head>
<body>
@ViewBag.MyHtml
</body>

Cela ne définit pas réellement le contenu. Quelqu'un sait-il comment je peux? Je peux changer toute ma structure en tout ce qui accomplit cela.

Était-ce utile?

La solution

En l'absence d'une autre raison, j'essaierais d'utiliser une demande GET et d'ouvrir la fenêtre à l'URL donnée.

win_detail = window.open('/controller/action?mydata=' + data, 'name');

Selon vos données, vous devrez peut-être le sérialiser différemment.

var form_data = $('form').serialize();
win_detail = window.open( '/controller/action?' + form_data, 'name');

Autres conseils

Au lieu de passer le contenuType à la vue via Viewbag, essayez de le définir dans le contrôleur avant de revenir.

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