当我在IIS上发布我的Web应用程序时,调用返回Json的操作方法不起作用

时间:2013-12-12 19:34:55

标签: asp.net-mvc json asp.net-mvc-4 iis

我的观点中有以下脚本: -

<script type="text/javascript">
    $(document).ready(function () {
        $("#Rack_DataCenterID").change(function () {
            var idDC = $(this).val();
            $.getJSON("/Rack/LoadZoneByDataCenter", { id: idDC },
            function (MedicineData) {
                var select = $("#Rack_ZoneID");
                select.empty();
                select.append($('<option/>', {
                    value: null
                }));
                $.each(MedicineData, function (index, itemData) {

                    select.append($('<option/>', {
                        value: itemData.Value,
                        text: itemData.Text
                    }));
                });
            });
        });

调用以下操作方法: -

[CheckUserPermissions(Action = "Edit", Model = "Rack")]
public JsonResult LoadZoneByDataCenter(string id)
{
    var zonelist = repository.getrealtedzone(Convert.ToInt32(id)).ToList();

    var ZoneData = zonelist.Select(m => new SelectListItem()
    {
        Text = m.Name,
        Value = m.ZoneID.ToString(),

    });

    return Json(ZoneData, JsonRequestBehavior.AllowGet);
} 

以上运行良好,但在我将我的应用程序发布到iis后,上面停止工作,没有json数据将填充下拉列表。谁能建议导致这个问题的原因是什么? 感谢

2 个答案:

答案 0 :(得分:2)

而不是$.getJSON("/Rack/LoadZoneByDataCenter", { id: idDC },应该做

 $.getJSON("@Url.Content("~/Rack/LoadZoneByDataCenter")", { id: idDC },

解析网址

答案 1 :(得分:1)

我的预感就是这就是你的问题所在:

$.getJSON("/Rack/LoadZoneByDataCenter", { id: idDC },

具体地

"/Rack/LoadZoneByDataCenter"

很多时候,当您发布到本地开发版本之外的其他内容时,相对URI会发生变化。