【发布时间】:2015-02-11 03:39:54
【问题描述】:
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>'));
}
我的控制器是
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);
}
它在本地工作,但由于某种原因,它不会填充网格,即使我知道链接有效,我也会收到 404 错误。我希望有人能指出我忽略的一个愚蠢的错误。
【问题讨论】:
-
您能否在网络浏览器中验证应该在您的解决方案中打开哪个正确 URL?如果未找到
/Address/AddressData/(http://BLAHBLAHBLAH/Address/AddressData/) - 这是错误的,那么您可能只是在 URL 中添加了一些前缀。 -
AddressData 是将数据加载到地址控制器上的网格的方法。我让 jqgrid 在这个应用程序的几个不同页面上工作,实际上只是从一个页面复制粘贴到另一个页面,所以我很困惑。这是在编辑页面上。在索引页面上,我设置了与 url='/Address/GridData' 相同的方式,它可以工作......
-
另外,如果我使用 @Url.Action("AddressData") 应该使用该方法的相对链接,它仍然不起作用。它就像 AddressData 不存在,但正如我在控制器中列出的那样。
-
问题不在于我不相信你。我只想找到你的问题的原因。您是否尝试在网络浏览器中验证哪个正确的 URL?典型的问题是:您在站点上的某个子文件夹 中安装了您的项目。所以正确的 URL 是
http://BLAHBLAHBLAH/SiteNameAddress/AddressData/。我个人使用路径相对于当前页面。我使用window.location.pathname来计算baseUrl,就像the answer 一样。 -
我尝试了这个 var pathArray = window.location.pathname.split('/'); var rootPath = ''; for (var i = 0; i
标签: c# jquery asp.net-mvc-4 jqgrid