2013-03-26 5 views
1

См. Скриншот ниже. Я возвращаю Json из контроллера, чтобы заполнить каскадный выпадающий список. Приложение работает отлично, когда запускается из визуальной студии, но выпадающее меню вообще не фильтруется (выбрасывает 404) при запуске с сервера iis. Я действительно смущен. Любая помощь будет оценена по достоинству. Благодарю.ASP.NET MVC - Проблема при получении ответа Json от IIS

На рис., Один сверху находится при запуске из VS, а нижний - при запуске из iis через интрасеть.

Я приложил приведенный ниже код в соответствии с запросом, но, как я уже упоминал выше, он отлично работает при работе с Visual Studio.

Контроллер

[HttpPost] 
     public JsonResult FilterByDivision(string divisionId) 
     { 
      try 
      { 
       using (ctx) 
       { 
        var SubDivResults = (from q in ctx.Test 
              where q.divId== divisionId 
              select new Models.SubDivisionDTO 
              { 
               SubDivID = q.subdivId, 
         SubDiv = q.SubDiv 

              }).Distinct().ToList(); 
        ajaxLookup.SubDiv = SubDivResults;   


       } 
       JsonResult result = new JsonResult(); 
        result.Data = ajaxLookup; 
         return result; 
       } 

      catch (Exception) 
      { 
       throw; 
      } 
     } 

Jquery

// Фильтр по дивизиону

$(function() { 
$("select#DivisionId").change(function (evt) { 
if ($("select#DivisionId").val() != "-1") { 
$.ajax({ 
url: "/AjaxDropDown/FilterByDivision", 
type: 'Post', 
data: { divisionId: $("select#DivisionId").val() }, 
success: function (data) { 
var subDivItems = "<option value='" + "-1" + "'>" + "Please Select" + "</option>"; 
$.each(data.subDivisions, function (i, val) { 
subDivItems += "<option value='" + val.subDivId + "'>" + val.subDivName + "</option>"; 
}); 
$("select#subDivId").empty().html(subDivItems); 
} 
}); 
} 
}); 
}); 

enter image description here

+0

Вы можете предоставить код C#, обрабатывающий запрос, а также сделанный вами javascript-айхакс-вызов. это поможет ответить на этот вопрос – iAmClownShoe

+1

Какая версия IIS работает на какой ОС? – Rob

+0

Я включил код в соответствии с запросом. IIS работает на сервере Windows 2008 R2. Спасибо – Ren

ответ

4

Если вы делаете вызов из jQuery, например, проверьте путь, потому что вы получаете 404. Вероятно, вы запускаете свое приложение в виртуальном каталоге, и вы вызываете абсолютный путь из своего javascript.

Это, вероятно, ваша проблема для результата 404.

С вашего сниппета проблема заключается, вероятно, здесь:

$.ajax({ 
    url: "/AjaxDropDown/FilterByDivision", 
    ... 
}); 

Вы должны иметь что-то, вероятно, в этой форме:

$(function() { 
    $("select#DivisionId").change(function (evt) { 
     var resourceAddress = '@Url.Content("~/AjaxDropDown/FilterByDivision")'; 

     if ($("select#DivisionId").val() != "-1") { 
      $.ajax({ 
       url: resourceAddress, 
       type: 'Post', 
       data: { 
        divisionId: $("select#DivisionId").val() 
       }, 
       success: function (data) { 
        var subDivItems = "<option value='" + "-1" + "'>" + "Please Select" + "</option>"; 
        $.each(data.subDivisions, function (i, val) { 
         subDivItems += "<option value='" + val.subDivId + "'>" + val.subDivName + "</option>"; 
        }); 
        $("select#subDivId").empty().html(subDivItems); 
       } 
      }); 
     } 
    }); 
}); 

Это даст вам относительный путь каждый раз.

+0

Спасибо за ответ. Ниже я расскажу о своем JQuery. Не внесены большие изменения. Так же, как предопределено MVC4. @ Styles.Render (" ~/Content/themes/base/css ") @ Styles.Render (" ~/Content/bootstrap ") @ Styles.Render (" ~/Content/css ") @ Scripts.Render (" ~/bundles/modernizr ") @ Scripts.Render (" ~/bundles/jquery ") @ Сценарии.Render ("~/bundles/jqueryui") @ Scripts.Render ("~/bundles/bootstrap") Любые предложения, пожалуйста? – Ren

+0

Здравствуйте, ваша проблема, вероятно, находится здесь: 'url:"/AjaxDropDown/FilterByDivision ",' Вы делаете вызов для ресурса в корне вашего домена, но на вашем ISS этого ресурса нет. –

+0

Я обновил свой ответ. –

0

Просмотрите файлы журнала IIS и проверьте HTTP-код подключения. Он предоставит некоторую дополнительную информацию о том, что вызывает ошибку 404. См. The HTTP status code in IIS 7.0, IIS 7.5, and IIS 8.0. Если ваш код подстановки равен 0 или 1, у вас может не быть правильного URL-адреса, или ваш файл может отсутствовать на сервере. Если это что-то еще, у вас возникнут другие проблемы, и вам будет предоставлен код подстановки.

Если у вас есть код подстановки 0 или 1, Андерсон Форталеза, вероятно, прав в своем ответе.

+0

спасибо. где я могу найти файл журнала iis? – Ren

Смежные вопросы