2013-05-08 63 views
0

我試圖返回與jQuery的數據表,它的作用是從以前的頁面推出了具有ActionLink--JQuery的數據表和ASP.NET MVC參數的ActionResult

@Html.ActionLink("View Audit", "Audit", new { id= Model.ID }) 

jQuery的數據表是一個視圖然後使用從Model ID傳入的ID進行預過濾。

這是我的JS文件。(順便說一下,一個靜態值,例如,10005工作在這裏的fnServerParams,但我需要的價值爲基礎的任何型號ID是從theprevious屏幕選擇上是動態的)

var oTable = $('#myAuditTable').dataTable({ 
    "sAjaxSource": "GetAuditLog", 
     "fnServerParams": function (aoData) 
    {   aoData.push({ "name": "ID", "value": 10005 }) 
    }, 
"aoColumns": [ 
.... 

這是我的Audit.cshtml頁面。

@model IEnumerable<Models.AuditLog> 

<table id="myAuditTable" width="100%"> 
       <tr>...</tr> 
</table> 

,並在控制器

public ActionResult GetAuditLog(int ID){ 

     var logs = db.AuditLog.Where(c => c.ID == ID).ToList(); 

     var result = from c in logs 
        select new[] { .... 
        }; 

     return Json(new 
     { 
      aaData = result 
     }, "text/x-json", JsonRequestBehavior.AllowGet); 
} 

所以我通常會在MVC傳遞參數,像這樣:

public ActionResult Audit(int ID) 
    {    
     return View(); 
    } 

但由於GetAuditLog是得到結果的動作,我該怎麼辦獲取int ID到GetAuditLog操作,以便將過濾器記錄傳遞給JSON。我無法在ActionLink中調用GetAuditLog,因爲它的工作是拉取JSON,而不是渲染View。

我不確定我錯過了什麼。我已經閱讀了這篇文章,因爲他們非常全面,就整合ASP.NET和數據表而言。 http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part 但找不到與我的問題完全吻合。 這篇文章似乎接近... How do I access the JQuery DataTables plugin aoData values in MVC3? 但是不太適用,因爲他似乎正在使用一個成功的傳入參數。

感謝您的任何幫助。

回答

1

嗨,你可以通過兩種方式實現:

首先從Model.Id創造具有價值隱藏域,然後在這個隱藏字段的值分配給您的DataTable()函數這樣

鑑於:

<input type="hidden" id="ID" value="@Model.ID" name="ID" /> 

,然後把你的下面的代碼和平下的document.ready,並指定值ID從隱藏字段這樣的:

$(document).ready(function(){ 
    var oTable = $('#myAuditTable').dataTable({ 
    "sAjaxSource": "GetAuditLog", 
    "fnServerParams": function (aoData) 
    {   aoData.push({ "name": "ID", "value": $("#ID").val() }) 
    }, 
    "aoColumns": [ 
    .... 

    }); 

二:把你的數據表()函數在您的視圖下的腳本標籤,並直接分配Model.Id這樣的:

<script type="text/javascript"> 
    var oTable = $('#myAuditTable').dataTable({ 
"sAjaxSource": "GetAuditLog", 
    "fnServerParams": function (aoData) 
{   aoData.push({ "name": "ID", "value": '@Model.ID' }) 
}, 
    "aoColumns": [ 
    .... 
    </script> 

希望這將解決這個問題。

+0

感謝您的回覆。問題是將Model.ID值從前一頁的操作鏈接中獲取到隱藏字段中。因爲Audit.cshtml View使用GetAuditLog中的另一個模型,該模型依賴於上一頁傳遞的Model.ID。我能想到的唯一方法是做某種局部視圖,但不知道如何工作。 – jfbouz23 2013-05-09 14:55:56

相關問題