构建routeValues一次,在Razor View

时间:2016-07-16 14:49:34

标签: asp.net-mvc razor httpcontext html.actionlink url.action

我不确定如何标题这个问题。目前在我的Razor视图中,我有以下内容

@Html.ActionLink("Rank -1", "ChangeRank", new
           {
               id = item.ID,
               newRank = (item.UserRank + 1),
               PosiFilter,
               TeamFilter,
               CurrentFilter,
               userLeagueID
           })

最后一组数据,PosiFilter,TeamFilter,CurrentFilter等在我的视图中用于不同的@ Html.ActionLinks。有没有办法在我的页面开头设置所有这些,

@{
    ViewBag.Title = "Index";
    string PosiFilter = @ViewBag.posiFilter;
    string TeamFilter = @ViewBag.teamFilter;
    string CurrentFilter = @ViewBag.CurrentFilter;
    int userLeagueID = @ViewBag.userLeagueID;

var GroupedRouteValues = PosiFilter, TeamFilter, CurrentFilter, userLeagueID
}

然后在像这样的动作链接中使用它们:

@Html.ActionLink("Rank -1", "ChangeRank", new
               {
                   id = item.ID,
                   newRank = (item.UserRank + 1),
                    GroupedRouteValues
               })

我尝试使用@ Url.Action,但如果我想为该特定链接添加额外的路由值,但我还没有弄清楚如何使用它,还包括之前的路由值。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来自己做这件事。我使用this.Request.RawUrl发送一个字符串returnUrl与每个actionlink然后在我的控制器上我返回一个重定向到returnUrl而不是Redirect to Action或Return View()。

前视图:

@Html.ActionLink("Rank -1", "ChangeRank", new
               {
                   id = item.ID,
                   newRank = (item.UserRank + 1),
                    returnUrl = this.Request.RawUrl
               })

控制器之前

public ActionResult ChangeRank (int id, int newRank, string returnUrl)
        {            
            //DO something            
            return Redirect(returnUrl);
        }