EDIT: Я давно уже вышел за рамки VS2008, и у меня не было проблем с возвратом результатов JSON с использованием MVC 3+. Я хотел бы отметить этот вопрос как устаревший или что-то в этом роде. Возможно, кто-то все равно найдет в этом смысл и ответы, но я не могу отметить их как «правильные», так как у меня нет возможности их проверить.Как вернуть JSONResult без браузера, предлагающего сохранить файл?
Я новичок в MVC, и я стараюсь сделать простой сайт. Я начинаю задаваться вопросом, действительно ли это стоит ... Я мог бы запустить этот сайт с «старой школьной» ASP.Net уже два или три раза ... но это не относится к делу ;-)
Как я могу заставить мой контроллер вернуть JSONResult без браузера, предлагая мне сохранить ответ в виде файла? Вот JavaScript, который вызывает действие:
$("select#PageId").change(function() {
var id = $("#PageId > option:selected").attr("value");
$.getJSON('FindCategories/', { PageId: id },
function(data) {
if (data.length > 0) {
var options = '';
for (c in data) {
var cat = data[c];
options += "<option value='" + cat.CategoryId + "'>" + cat.CategoryName + "</option>";
}
$("#CategoryId").removeAttr('disabled').html(options);
} else {
$("#CategoryId").attr('disabled', true).html('');
}
});
});
Вот мой контроллер действия:
Function GetCategoriesByPage(ByVal PageId As Integer) As JsonResult
Dim categories As List(Of Models.WebCategoryLite) = _service.ListCategoriesByPageId(PageId)
Dim res As New JsonResult
res.Data = categories
Return res
End Function
Скрипач показывает мне, что JSON возвращается в браузер:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Mon, 24 Aug 2009 19:43:53 GMT
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 1.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 246
Connection: Close
[{"CategoryID":1,"CategoryName":"Sample Category"},{"CategoryID":2,"CategoryName":"Another Sample"},{"CategoryID":3,"CategoryName":"Yet Another Sample"}]
Нет вопрос, в какой браузер я пытаюсь это сделать, я получаю приглашение «сохранить файл как».
Я запускаю это изнутри Visual Studio 2008 IDE. Что мне нужно сделать, чтобы выполнить эту работу, как в среде IDE, так и в IIS?
Заранее благодарен!
* Я написал второй пример в C#, потому что я не помню В. Б. syntaxe – Cleiton
Ну, я попытался HttpContext.Response.ContentType = «текст/обычный» и Скрипач еще показал тип контента как "Применение/JSON." Затем я установил свойство «ContentType» объекта JSONResult в «text/plain», и моя исходная страница aspx была заменена результатом JSON, отображаемым на странице браузера в виде обычного текста. – camainc
, второй результат - правильное поведение. –