C# JqGrid 404从控制器获取

C# JqGrid 404从控制器获取,c#,jquery,asp.net-mvc-4,jqgrid,C#,Jquery,Asp.net Mvc 4,Jqgrid,C MVC4 我收到以下错误: GET http://BLAHBLAHBLAH/Address/AddressData/ [HTTP/1.1 404 Not Found 71ms] 在调试器中。 我的JS定义如下: $(function () { var filter = $("#ClientId").val(); //Address Grid $("#tickets").jqGrid({ url: '/Address/AddressData/',

C MVC4 我收到以下错误:

GET http://BLAHBLAHBLAH/Address/AddressData/ [HTTP/1.1 404 Not Found 71ms]
在调试器中。 我的JS定义如下:

$(function () {

    var filter = $("#ClientId").val();

    //Address Grid
    $("#tickets").jqGrid({
        url: '/Address/AddressData/',
        datatype: 'json',
        mtype: 'GET',
        postData: {
            filters: filter
        },
        closeOnEscape: true,
        multipleSearch: true,
        closeAfterSearch: true,
        colNames: ['Action', 'AddressId', 'AddressLine1', 'AddressLine2', 'City', 'State', 'Zip', 'Available'],
        colModel: [
            {
                name: 'Action',
                width: 220,
                align: 'center',
                sortable: false,
                search: false,
                formatter: EditBtnFormatter,

            },
            {
                name: 'Id',
                index: 'Id',
                width: 300,
                align: 'left',
                sortable: true,
                search: true,

            },
            {
                name: 'AddressLine1',
                index: 'AddressLine1',
                width: 800,
                align: 'left',
                sortable: true,
                search: false,


            },
            {
                name: 'AddressLine2',
                index: 'AddressLine2',
                width: 600,
                align: 'left',
                sortable: true,
                search: false,


            },
            {
                name: 'City',
                index: 'City',
                width: 350,
                align: 'left',
                sortable: true,
                search: false,

            },
            {
                name: 'State',
                index: 'State',
                width: 200,
                align: 'left',
                sortable: true,
                search: false,
            },
            {
                name: 'Zip',
                index: 'Zip',
                width: 250,
                align: 'left',
                sortable: true,
                search: false,
            },
            {
                name: 'Available',
                index: 'Deleted',
                width: 250,
                align: 'left',
                sortable: true,
                search: false,
            }
        ],

        pager: jQuery('#pager'),
        rowNum: 30,
        rowList: [20, 30, 40, 50],
        search: true,
        sortname: 'AddressLine1',
        sortorder: 'asc',
        viewrecords: true,
        gridview: true,
        imgpath: 'content/themes/base/images',
        caption: 'Addresses',
        formatter: 'Action',
        autowidth: true,
        formatoptions: {
            keys: true,
            editformbutton: true
        }
    }).jqGrid('gridResize', null).navGrid('#pager', { view: false, del: false, add: false, edit: false },
        {}, // default settings for edit
        {}, // default settings for add
        {}, // delete
        {
            closeOnEscape: true, multipleSearch: true, searchOnEnter: true,
            closeAfterSearch: true
        }, // search options
        {}
    );
    jQuery("#addrs").setGridWidth(1200, true);
    jQuery("#addrs").setGridHeight(600, true);

    function EditBtnFormatter(cellvalue, options, rowObject) {
        console.log(rowObject);

        return (('<a title="Edit" href ="@Url.Action("Edit","Address")' + '/' + rowObject[1] + '"><img src="../../Content/themes/base/images/edit_icon_fer_checklist.png" /></a>'));
    }

它在本地工作,但由于某些原因,它不会填充网格,我得到404错误,即使我知道链接是有效的。我希望有人能指出我忽略的一个愚蠢的错误。

在运行localhost时,通常会将项目名称放在localhost之后,如下所示:

在服务器上运行时,将丢失项目名称:


确保您在jquery中的路径意识到了这一点。

{localhost是您的服务器,从应用程序的角度来看,我认为}/Address{controller}/AddressData{method}/我在那里遗漏了什么吗?404显然告诉您它找不到页面。请尝试直接从服务器上的浏览器访问该页面/方法,并查看是否可以通过这种方式找到正确的路径,然后找出两者之间的差异。是否可以在web浏览器中验证应在解决方案中打开哪个正确的URL?如果/地址/地址数据/http://BLAHBLAHBLAH/Address/AddressData/ 找不到-这是错误的,那么您可能只是在URL中添加了一些前缀。AddressData是将数据加载到地址控制器上的网格的方法。我让jqgrid在这个应用程序的几个不同页面上工作,只是从一个页面复制粘贴到另一个页面,所以我很困惑。这在编辑页面上。在索引页面上,我设置了url='/Address/GridData'的相同方式,并且它可以工作……如果我使用@url.ActionAddressData,它应该使用指向该方法的相对链接,那么它仍然不工作。好像AddressData不在那里,但正如我在控制器中列出的那样,它在那里。问题不是我不相信你。我只想找出你问题的原因。您是否尝试在web浏览器中验证哪个URL正确?典型的问题是:您在站点的某个子文件夹中安装了项目。因此,正确的URL将是http://BLAHBLAHBLAH/SiteNameAddress/AddressData/. 我个人使用相对于当前页面的路径。我使用window.location.pathname来计算baseUrl,如中所示。我尝试使用var pathArray=window.location.pathname.split'/';var rootPath=;对于var i=0;ipublic JsonResult AddressData(string sidx, string sord, int page, int rows, bool _search, string filters) { var newfil = Int32.Parse(filters); var pageSize = rows; var totalRecords = (from addrs in db.Addresses where addrs.ClientId == newfil select addrs).Count(); var totalPages = (int)Math.Ceiling(totalRecords / (float)pageSize); string orderby = sidx + " " + sord; if (sidx == "AddressLine1") { orderby = "AddressLine1" + " " + sord; } var addresses = (from addr in db.Addresses select addr).OrderBy(orderby); if (_search) { addresses = addresses.Where(x => x.ClientId.Equals(newfil)); } var addressData = (from addrs in addresses select new { addrs.Id, addrs.AddressLine1, addrs.AddressLine2, addrs.City, addrs.State, addrs.Zip, addrs.Deleted }).ToList (); var jsonData = new { total = totalPages, page, records = totalRecords, rows = ( from item in addressData select new { cell = new[] { string.Empty,item.Id.ToString(), item.AddressLine1, item.AddressLine2, item.City, item.State, item.Zip, item.Deleted } } ) }; return Json(jsonData, JsonRequestBehavior.AllowGet); }