, но отображается как "localhost: 9392 / Ranking / Index / 2? RankingType = RankingTypeID & ageGroup = ageGroupID & week = week"
Это потому, что именно эти строковые значения вы используете:
new { id = Model.CurrentRanking, rankingType = "rankingTypeID", ageGroup = "ageGroupID", week = "week"}
Не совсем понятно, почему вы пытаетесь установить значения строки запроса для точных входных данных формы, которые у вас уже есть :
<input id="ageGroupID" name="ageGroup" hidden />
<input id="rankingTypeID" name="rankingType" hidden />
<input id="week" name="week" hidden />
Если чтовы пытаетесь добиться, чтобы эти значения были в строке запроса (как запрос GET), а не в теле запроса (как запрос POST), тогда все, что вам нужно сделать, это изменить метод формы на GET:
@using (Html.BeginForm("Index", "Ranking", new { id = Model.CurrentRanking }, FormMethod.Get, new { id = "ageGroupForm" }))
Входные данные HTML-формы автоматически добавляются в запрос, так работают формы.Вам не нужно пытаться сделать это вручную.
Хотя странно, что вы делаете это вообще.Ваши входные данные скрыты, что обычно означает, что вы не хотите беспокоить пользователя ими.Но вы также показываете их в URL, что может вводить пользователя в заблуждение (или даже может быть подозрительным для пользователя).Вы также не устанавливаете какие-либо значения для этих скрытых входных данных, если у вас нет чего-то еще, не включенного здесь, что делает это?
В любом случае, ваша форма автоматически включит свои входные данные в отправленныезапрос.