РЕДАКТИРОВАТЬ: я давно вышел за пределы VS2008, и у меня не было проблем с возвратом результатов JSON с использованием MVC 3+. Я хотел бы отметить этот вопрос как устаревший или что-то в этом роде. Возможно, кто-то все равно найдет в этом ценность и ответы, но я не могу пометить их как «правильные», поскольку у меня нет возможности их проверить.
Я новичок в 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
Fiddler показывает мне, что 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"}]
Независимо от того, с каким браузером я пробую это сделать, я получаю приглашение «сохранить файл как».
Я запускаю это из среды IDE Visual Studio 2008. Что мне нужно сделать, чтобы это работало как в среде IDE, так и в IIS?
Заранее спасибо!