【问题标题】:Datatable : click on button does not open view数据表:单击按钮不打开视图
【发布时间】:2020-03-20 09:14:28
【问题描述】:

我有一个正确显示概览数据的数据表。 我添加了一个按钮,该按钮应该转到我的控制器并从那里打开一个新视图,显示所选行的详细信息。

点击有效,我到达控制器上的方法。但是我的详细信息视图没有打开。

这是我的javascript:

$("#search-logs tbody").on('click', 'button', function () {
    var self = this;
    var tr = $(self).closest('tr');
    var dtRow = datatable.row(tr[0]);
    var rowData = dtRow.data();
    var processId = rowData[0];

    $.get("@Url.Action("Details","Logs")", { id: processId });
});

这是我控制器中的代码:

[HttpGet]
public ActionResult Details(int id)
{
    return View();
}

谁能告诉我我做错了什么?

【问题讨论】:

    标签: javascript c# model-view-controller datatables


    【解决方案1】:

    你可以试试:

    $("#search-logs tbody").on('click', 'button', function () {
       var self = this;
       var tr = $(self).closest('tr');
       var dtRow = datatable.row(tr[0]);
       var rowData = dtRow.data();
       var processId = rowData[0];
       location.href = '@Url.Action("Details","Logs")?id='+ processId;  
    });
    

    【讨论】:

      【解决方案2】:

      您的代码的问题在于您正在调用一个 ajax get 函数,该函数返回一个视图,而不是简单的 HTTP 响应。要呈现此视图,您需要将页面重定向到该 url,而不是执行 ajax 请求。

      $("#search-logs tbody").on('click', 'button', function () {
          var self = this;
          var tr = $(self).closest('tr');
          var dtRow = datatable.row(tr[0]);
          var rowData = dtRow.data();
          var processId = rowData[0];
      
          location.href = '@Url.Action("Details","Logs")?id='+ processId;
      });
      

      另外如果你还想使用get请求,主要是检查id是否存在,因为它可以返回404 Not found,你可以这样的ajax函数,

      $("#search-logs tbody").on('click', 'button', function () {
          var self = this;
          var tr = $(self).closest('tr');
          var dtRow = datatable.row(tr[0]);
          var rowData = dtRow.data();
          var processId = rowData[0];
      
          $.get("@Url.Action("Details","Logs")", { id: processId }, 
      
          function(data, statusText, xhr){
           if(xhr.status == 200) location.href = '@Url.Action("Details","Logs")?id='+ processId;
          else alert('Sorry, this id does not exist');
          });
      });
      

      【讨论】:

        【解决方案3】:

        您可以在新窗口中打开构建的链接或在当前窗口中加载 //在新窗口中打开 window.open(newUrlCreated, '_blank');

        //在当前窗口中打开

        1. window.open(xhr.data);
        2. window.location.href=newUrlCreated;

          there are a lot of ways to achieve that.
          You can add an onclick="operate(row['info'], row['info'])" to your button which calls a function with specified data 
          from the datatable row, you will not bother to search for clicked button and row. 
          
        function operate(selectedRow, data, ...){
        //logic of button for row
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-21
          • 2014-07-30
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 2018-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多