.net NET内核
我创建了一个视图,其中包含一个与服务器端绑定的jQuery数据表,并将3个下拉列表作为过滤器 我使用Request.form获取数据表变量(draw、length、start) 但我无法获得3个下拉列表的值 代码 看法 })) 剧本.net NET内核,.net,ajax,asp.net-core,.net,Ajax,Asp.net Core,我创建了一个视图,其中包含一个与服务器端绑定的jQuery数据表,并将3个下拉列表作为过滤器 我使用Request.form获取数据表变量(draw、length、start) 但我无法获得3个下拉列表的值 代码 看法 })) 剧本 function FilterData() { var dt = { userID: $("#ddlUsers").val(), PageID: $("#ddlPages").val(), ActionID: $(
function FilterData() {
var dt = { userID: $("#ddlUsers").val(), PageID: $("#ddlPages").val(), ActionID: $("#ddlDBActions").val() };
$.ajax({
type: "POST",
url: "@Url.Action("LoadData", "ActivityLog")",
// data: '{userID: '+ $("#ddlUsers").val() + ',PageID: ' + $("#ddlPages").val() + ',ActionID: ' + $("#ddlDBActions").val() +'}',
data: dt,
dataType: "json",
success: function (response) {
CS
public async Task LoadData(int?userID、int?PageID、int?ActionID)
{
尝试
{
//创建DatabaseContext类的实例
var dict=Request.Form.ToDictionary(x=>x.Key,x=>x.Value.ToString());
var draw=dict[“draw”];
var start=dict[“start”];
变量长度=dict[“长度”];
//var sortColumn=dict[“columns[”+dict[“order[0][column]”]+“][name]”;
//var sortColumnDir=dict[“订单[0][dir]”;
//var searchValue=dict[“搜索[值]”];
//分页大小(10,20,50100)
int pageSize=length!=null?转换.ToInt32(长度):0;
int skip=start!=null?转换.ToInt32(start):0;
int-recordsTotal=0;
var模型=新的DataTableAjaxPostModel();
model.draw=int.Parse(draw);
model.length=int.Parse(长度);
model.start=int.Parse(start);
model.ActionID=ActionID;
model.PageID=PageID;
model.UserID=UserID;
var res=等待客户端搜索函数(模型);
我对初始数据表使用相同的函数LoadData(工作)
但是在对下拉列表的更改中,我丢失了datatable信息
如何在request.form中同时获得这两种格式
我尝试添加表单标记,但得到了相同的结果
.NET核心2.2
一次改变结果
加载结果
下面是一个演示,演示如何传递数据表数据和ddl值: 视图: 密码数据:
public class PassData
{
public PassData() {
TestDTs = new List<TestDT>();
}
public IEnumerable<TestDT> TestDTs { get; set; }
public string userID { get;set;}
public string PageID { get; set; }
public string ActionID { get; set; }
}
}
公共类PassData
{
公共密码数据(){
TestDTs=新列表();
}
公共IEnumerable TestDTs{get;set;}
公共字符串用户标识{get;set;}
公共字符串PageID{get;set;}
公共字符串ActionID{get;set;}
}
}
结果:
$(“#ddlUsers”).val()不起作用。您需要下拉列表中选定选项的值:$(“#elementId:selected”).text();//选定选项的文本内容$(“#elementId:selected”).val()//选定选项的值$(“#ddlUsers”).val()返回ddl值,但这不是我的问题,我要问的是如何同时返回ddl值和datatable值
function FilterData() {
var dt = { userID: $("#ddlUsers").val(), PageID: $("#ddlPages").val(), ActionID: $("#ddlDBActions").val() };
$.ajax({
type: "POST",
url: "@Url.Action("LoadData", "ActivityLog")",
// data: '{userID: '+ $("#ddlUsers").val() + ',PageID: ' + $("#ddlPages").val() + ',ActionID: ' + $("#ddlDBActions").val() +'}',
data: dt,
dataType: "json",
success: function (response) {
public async Task<JsonResult> LoadData(int? userID,int? PageID, int? ActionID)
{
try
{
//Creating instance of DatabaseContext class
var dict = Request.Form. ToDictionary(x => x.Key, x => x.Value.ToString());
var draw = dict["draw"];
var start = dict["start"];
var length = dict["length"];
// var sortColumn = dict["columns[" + dict["order[0][column]"] + "][name]"];
// var sortColumnDir = dict["order[0][dir]"];
// var searchValue = dict["search[value]"];
//Paging Size (10,20,50,100)
int pageSize = length != null ? Convert.ToInt32(length) : 0;
int skip = start != null ? Convert.ToInt32(start) : 0;
int recordsTotal = 0;
var model=new DataTableAjaxPostModel();
model.draw=int.Parse( draw);
model.length=int.Parse(length);
model.start=int.Parse(start);
model.ActionID=ActionID;
model.PageID=PageID;
model.UserID=userID;
var res = await ClientSearchFunc(model);
div class="row">
<div class="col-lg-12">
<div class="card card-outline-info">
<div class="card-body">
<div class="form-body">
<div class="row p-t-20" style="padding:0px">
<div class="col-4">
<select class="form-control custom-select" id="ddlUsers" name="ddlUsers" onchange="FilterData()">
<option value="1">Volvo</option>
<option value="2">Saab</option>
<option value="3">Mercedes</option>
<option value="4">Audi</option>
</select>
</div>
<div class="col-4">
<select class="form-control custom-select" id="ddlPages" name="ddlPages" onchange="FilterData()">
<option value="11">Volvo</option>
<option value="22">Saab</option>
<option value="33">Mercedes</option>
<option value="44">Audi</option>
</select>
</div>
<div class="col-4">
<select class="form-control custom-select" id="ddlDBActions" name="ddlDBActions" onchange="FilterData()">
<option value="111">Volvo</option>
<option value="222">Saab</option>
<option value="333">Mercedes</option>
<option value="444">Audi</option>
</select>
</div>
<div>
<table id="dataList" class="table table-striped table-bordered" style="width:100%">
<thead class="thead-dark">
<tr class="table-info">
<th>id</th>
<th>name</th>
<th>age</th>
<th>phone</th>
<th>email</th>
</tr>
</thead>
</table>
<button onclick="submitdata()">submit</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@section scripts{
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>
<script type="text/javascript">
$('#dataList').DataTable({
ajax: {
url: '/Test/Data',
},
columns: [
{ data: 'id' },
{ data: 'name' },
{ data: 'age' },
{ data: 'phone' },
{ data: 'email' }
]
})
function submitdata() {
var table = $('#dataList').DataTable();
var dd = table.rows().data().toArray();
var data = new Object();
data.TestDTs = dd;
data.userID = $("#ddlUsers :selected").val();
data.PageID = $("#ddlPages :selected").val();
data.ActionID = $("#ddlDBActions :selected").val();
$.ajax({
type: "POST",
contentType: "application/json;",
url: '/Test/GetDataTableData',
data: JSON.stringify(data),
success: function () {
alert('success');
},
error: function () {
alert('failure');
}
});
}
</script>
}
[HttpPost]
public IActionResult GetDataTableData([FromBody] PassData passData) {
return Ok();
}
public class PassData
{
public PassData() {
TestDTs = new List<TestDT>();
}
public IEnumerable<TestDT> TestDTs { get; set; }
public string userID { get;set;}
public string PageID { get; set; }
public string ActionID { get; set; }
}
}