asp.net-mvc - 如何使用 Html.ActionLink 传递多个参数(一些复杂的对象)

标签 asp.net-mvc razor actionlink

我正在 .net 4.0 中使用 MVC。我有一个基本的 Html.ActionLink,我希望将多个参数传递给 Controller ​​/ Action 。

每次我调试 ActionResult 时,只有一个参数通过,另一个为空(取决于哪个是第一个)。现在我知道我可以传入复杂的对象,因为我可以让“联盟”对象通过。但是,我不确定为什么在任何时候只有我的一个参数通过。

View 中的代码:(不要骚扰我关于 ViewBag。我知道它不受欢迎。另外,League 是一个复杂的对象)

@Html.ActionLink("Sort By WeeK", "Sort", "Schedule",
                 new { league = ViewBag.League, sortType = "Week" }, null)

Controller 中的代码:(这里没有惊喜)
public ActionResult Sort(League league, string sortType)
{
    //Do some stuff here
    return View("Schedule");
}

我猜答案将围绕路由展开。这让我想到了我的第二个问题。我怎样才能让这种类型的 ActionLink( Action / Controller /复杂和简单对象的集合)在不不断添加新的 map 路由的情况下工作。是否有我可以添加的通用/通配符 RouteMap,这样我就不必经常将解剖结构相同的路由映射添加到 global.asax。或者,也许我希望传递给 Action 的对象类型具有一定的灵活性,因此我无法预定义确切的签名。

我看过很多关于这个主题的帖子,但没有一个回答我的问题。

最佳答案

我认为它可能会因为 null 参数而感到困惑。尝试这个:

@Html.ActionLink("Sort By WeeK", actionName:"Sort", controllerName: "Schedule", routeValues: new { league = ViewBag.League, sortType = "Week" }, htmlAttributes:null)

关于asp.net-mvc - 如何使用 Html.ActionLink 传递多个参数(一些复杂的对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077150/

相关文章:

c# - MVC 业务逻辑访问模型

javascript - ASP.NET MVC 重新加载页面表单重新提交并带有警报

c# - 除了一个(登录)之外,保护 Controller 所有操作的最佳方法是什么?

asp.net-mvc - 将 asp.net mvc ajax actionlink 重写为 jquery/ajax 语句

asp.net-mvc - 使用 Ajax.ActionLink 执行正确的 HTTP 删除时出现问题

asp.net-mvc - ASP.NET MVC View 中允许多少逻辑?

asp.net-mvc - MVC 部分 View 、模型等

asp.net-mvc - 如何使用 Html.ActionLink 链接到站点的根目录?

c# - Ajax 后重定向

c# - 为什么我的操作不返回 View ?