2013-04-11 39 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的字符串。