Pregunta

Necesito abrir una nueva ventana y establecer el contenido en lo que haya determinado una publicación en mi controlador MVC cuando se hace clic en un enlace. Así es como lo estoy haciendo actualmente.

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);
        }
    });

El controlador actualmente está procesando lo que HTML debería estar en la página y colocarlo en la bolsa de vista. También es poner lo que la respuesta. ContentType debería estar en la bolsa de vista. Mi mycontroller.cshtml tengo algo como esto.

@{
Response.ContentType = ViewBag.ContentType;
}

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

Esto en realidad no establece el ContentType. ¿Alguien sabe cómo puedo? Puedo cambiar toda mi estructura a lo que logre esto.

¿Fue útil?

Solución

En ausencia de alguna otra razón, intentaría usar una solicitud GET y simplemente abrir la ventana a la URL dada.

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

Dependiendo de sus datos, es posible que deba serializarlos de manera diferente.

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

Otros consejos

En lugar de pasar el ContentType a la vista a través de Viewbag, intente configurarlo en el controlador antes de regresar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top