.net NET内核

.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: $(

我创建了一个视图,其中包含一个与服务器端绑定的jQuery数据表,并将3个下拉列表作为过滤器 我使用Request.form获取数据表变量(draw、length、start) 但我无法获得3个下拉列表的值

代码

看法

}))

剧本

  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; }
    }
}