C# JqGrid 404从控制器获取
C MVC4 我收到以下错误: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/',
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;i
public 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);
}