前端代码:
layui.use("table", function () {
var table = layui.table;
table.render({
elem: '#user'
, height: 312
, url: '/user/UserList' //数据接口
, page: true //开启分页
, toolbar: '#toolbarNote'
, contentType: 'application/x-www-form-urlencoded'
, method:"get"
, parseData: function (res) {
}
, cols: [[ //表头
{ field: 'Account', title: '账号', width: 120, fixed: 'left' }
, { field: 'Username', title: '用户名', width:120 }
, { field: 'Sex', title: '性别', width: 120 }
, { field: 'Email', title: '邮箱', width:120, sort: true }
, { field: 'Permission', title: '权限', width: 120 }
]]
})
});
后台控制器:
public IActionResult UserList(int page,int limit)
{
string pageIndex =Request.Form["page"].ToString();
return View();
}
我F12能看到参数,但是调试的时候两个参数一直为0,并且使用Request一直提示Incorrect Content-Type的错误。
不为0你想为什么,本来你这样写就是没值的,你打开这个页面是先去访问控制器然后跳转到页面上
我要弄成异步的?
@灬丶: 你访问这个页面的URL传limit和page过来了吗?你想直接在访问页里面直接拿table里面的分页参数?那应该是在你数据访问接口实现方法里面取接收参数
但是layui不是默认会有page和limit两个参数?
@灬丶: 是有啊,但是不是在这个方法里面接收的,MVC层次关系你可能都没有搞清楚。你现在这个方法是Return View(),返回到一个视图页面,然后只有等视图页面加载完他所有的内容才会有这两个参数啊
那我不应该返回view了?
@灬丶: 我的天,首先你不返回一个View怎么去访问你要访问的页面,你写这个方法是必要的,layui的table里面不是有一个url,一个访问数据接口实现的方法吗?在那个方法里面把当前layui带的page和limit接收,你要这个参数传过去进行分页吧?
public IActionResult Index()
{
return View();
}
public ResultData GetLinkRecordList(int pageIndex, int limit, string name, string nextTime,string addUser,string startAddTime,string endAddTime)
{
ResultData result = new ResultData();
try
{
result.Data = linkRecordInterface.GetListByPage(pageIndex, limit, name, nextTime,addUser,startAddTime,endAddTime, out int count);
result.Count = count;
}
catch (Exception ex)
{
}
return result;
}
我大概知道了点。就是新写一个查询的方法,然后layui的url指向这个方法?:
@灬丶: 是的,你首先逻辑得搞清楚
@Idiot_Xiao: 嗯嗯,谢了,我回去试下,之前一直写的WebForm项目,现在正在学习MVC
Action 参数加上 [FromBody]
public IActionResult UserList([FromBody]int page, [FromBody]int limit)
{
return View();
}
不行,我加了了之后方法都进不去
@灬丶: 不好意思,之前回答时记错了,正确的解决方法见 .Net Core 2.0/2.1 Ajax Post,后台Action接收到的参数为 null