Передача значений маршрута в Html.BeginForm - PullRequest
0 голосов
/ 28 мая 2018

Я хочу, чтобы форма передавала значения из скрытых входных данных на сервер, и я также ожидал, что она создаст URL-адрес как "localhost: 9392 / Ranking / Index / 2? RankingType = SOMEVALUE & ageGroup = SOMEVALUE & week = SOMEVALUE"

но отображается как "localhost: 9392 / Ranking / Index / 2? RankingType = RankingTypeID & ageGroup = ageGroupID & week = week"

@using (Html.BeginForm("Index", "Ranking", new { id = Model.CurrentRanking, rankingType = "rankingTypeID", ageGroup = "ageGroupID", week = "week"}, FormMethod.Post, new { id = "ageGroupForm" }))
                {
                <input id="ageGroupID" name="ageGroup" hidden />
                <input id="rankingTypeID" name="rankingType" hidden />
                <input id="week" name="week" hidden />              
                }

Почему это так?Как передать значения и отобразить их в виде строки запроса?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Попробуйте этот код:

@using (Html.BeginForm("Index", "Ranking"))
                {
                <input id="ageGroupID" name="ageGroup" hidden />
                <input id="rankingTypeID" name="rankingType" hidden />
                <input id="week" name="week" hidden />              
                }

и в вашем методе действия украсьте его следующим образом:

public ActionResult Index(string ageGroupID, string rankingTypeID, string week){}
0 голосов
/ 28 мая 2018

, но отображается как "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, что может вводить пользователя в заблуждение (или даже может быть подозрительным для пользователя).Вы также не устанавливаете какие-либо значения для этих скрытых входных данных, если у вас нет чего-то еще, не включенного здесь, что делает это?

В любом случае, ваша форма автоматически включит свои входные данные в отправленныезапрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...