2013-04-11 55 views
1

我有一個MVC3項目,我在其中創建了一個動態jQuery DataTable。我在我的表中添加了一個名爲「GetDataFunc」的自定義屬性,其中包含控制器端的操作名稱。 我想在定義DataTable時使用此屬性的值,但@ Url.Action不會接受第一個參數中的參數(與字符串相反)。在MVC3中動態設置動作名稱cshtml

我的代碼:

 var table = document.getElementById('UsersTbl'); 

     if (table.hasAttribute("GetDataFunc")) { 

      var func = table.GetDataFunc; 

      var oTable = $('#MyTbl').dataTable({ 
       "bServerSide": true, 
       "sAjaxSource": '@Url.Action(func, "MyPages")', 
       "bProcessing": true, 
       "aoColumns": cols, 
       "oLanguage": { "sSearch": "Search all columns:" }, 
       "fnDrawCallback": function (oSettings) { 
        totalRecords = oSettings.fnRecordsDisplay(); 
       } 
      }); 

     } 

當我嘗試運行我的程序,我得到:
名稱「功能」不會在目前情況下存在

如何動態定義哪個函數調用控制器端?

謝謝

+0

爲什麼你不能只使用一個字符串?如果您知道方法名稱,則使用它與'Url.Action'。 – 2013-04-11 11:50:51

+0

因爲我不知道。我將從外部XML文件中獲取函數名稱。正如我所說,這是一個動態數據表。你是對的,如果我在頁面上只有一個表格,就不會有這樣的問題,但是如果我有多個表格,我將無法知道應該調用哪個函數。 – 2013-04-14 07:06:08

回答

0

您正在嘗試混合使用JavaScript和C#。別。

而不是'@Url.Action(func, "MyPages")'只使用JavaScript來確定你需要去的網址。在這一天結束時,@Url.Action會生成一個包含控制器/操作url的字符串。