2016-07-16 7 views
0

Я не был уверен, как назвать этот вопрос. В настоящее время, на мой взгляд Razor У меня есть следующиепостроить routeValues ​​один раз для повторного использования в Razor View

@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 
} 

, а затем использовать их в ActionLink так:

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

Я пытался играть с @ Url.Action но я не мог понять, как его использовать, если я хочу добавить дополнительные значения маршрута в эту конкретную ссылку, но пока не укажу параметры маршрута раньше.

ответ

0

Я понял способ сделать это самостоятельно. Я отправляю строку returnUrl, используя this.Request.RawUrl с каждым действием, а затем на моем контроллере. Я возвращаю перенаправление на returnUrl вместо перенаправления на действие или обратно().

Ex зрения:

@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); 
     }