我有一个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"
})
我的 Controller 方法接受列表作为参数
mymethod(列表列表)
最佳答案
不使用@Ajax.ActionLink()
。如果您传递一个对象,则该方法在内部使用反射来使用对象中每个属性的名称和值构建 RouteValueDictionary
。因此,对于仅具有原始项目的简单对象,它可能返回(例如,对于 Person 对象) /TimeSeriesData?id=1&firstname=John&lastname=Doe
但对于集合或对象中的复杂对象,它仅返回属性的 ToString()
方法。
在您的情况下(检查它生成的html)它会类似于 /TimeSeriesData?capacity=0&count=0
因为 capacity
和 count
是List
的属性。您可以构建自己的 RouteValueDictionary
但这不是一个好主意,因为您很快就会超出查询字符串的字符限制。相反,只需传递模型的 ID,然后在操作方法中再次从数据库(或 session )获取模型即可。
关于jquery - ajax.actionlink 路由值中是否可以有一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616439/