是否可以在ajax.actionlink路由值中有一个列表

时间:2014-10-28 19:01:50

标签: jquery ajax asp.net-mvc

我有一个Ajax.ActionLink,在路线值中我有new List<object>这是合法的吗?另外,我需要@ before the Model吗?

@Ajax.ActionLink(Model.LastName[lastNameCount - 1].Value1, // <-- Text to display
   "TimeSeriesData", // <-- Action Method Name
   new List<object>{@Model, @Model.LastName[lastNameCount - 1]},
   new AjaxOptions
      {
         UpdateTargetId = "dialog2", // <-- DOM element ID to update
         InsertionMode = InsertionMode.Replace, // <-- Replace the content of DOM element
         HttpMethod = "GET" // <-- HTTP method
      },
   new
      {
         @id = "opener"

      })

我的控制器方法接受列表作为参数

mymethod(列表一览表)

1 个答案:

答案 0 :(得分:0)

不使用@Ajax.ActionLink()。如果传递对象,则内部方法使用反射来使用对象中每个属性的名称和值来构建RouteValueDictionary。因此,对于只有原始项目的简单对象,它可能会返回(例如对于Person对象)/TimeSeriesData?id=1&firstname=John&lastname=Doe但对于对象内的集合或复杂对象,它只返回属性的ToString()方法。

在您的情况下(检查它生成的html),它类似于/TimeSeriesData?capacity=0&count=0,因为capacitycountList的属性。您可以构建自己的RouteValueDictionary,但这不是一个好主意,因为您很快就会超出查询字符串的字符限制。而只是传递模型的ID,并在action方法中再次从数据库(或会话)中获取模型。