Установить ContentType нового окна, открытого в JavaScript после записи MVC - PullRequest
0 голосов
/ 17 июня 2011

Мне нужно открыть новое окно и установить содержимое в соответствии с тем, что было определено сообщением в моем контроллере MVC при нажатии на ссылку. Вот как я сейчас это делаю.

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

Контроллер в настоящее время обрабатывает, какой HTML должен быть на странице, и помещает его в ViewBag. Это также помещает то, что Response.ContentType должен быть в ViewBag. Мой mycontroller.cshtml У меня есть что-то вроде этого.

@{
Response.ContentType = ViewBag.ContentType;
}

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

Это фактически не устанавливает ContentType. Кто-нибудь знает, как я могу? Я могу изменить всю свою структуру на то, что выполняет это.

Ответы [ 2 ]

2 голосов
/ 18 июня 2011

В отсутствие какой-либо другой причины я бы попытался использовать GET-запрос и просто открыть окно с заданным URL-адресом.

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

В зависимости от ваших данных вам может потребоваться сериализовать их по-разному.

var form_data = $('form').serialize();
win_detail = window.open( '/controller/action?' + form_data, 'name');
0 голосов
/ 17 июня 2011

Вместо того, чтобы передавать ContentType в представление через ViewBag, попробуйте установить его в контроллере перед возвратом.

...