У меня есть приложение MVC, и команда пользовательского интерфейса запросила, чтобы URL-адреса для страницы с карьерой соответствовали этому формату: mydomain.com/careers/{jobTitle}/{JobCode}
. Я могу сделать это в контроллере карьеры, как это:Как работать с неиспользуемыми параметрами маршрутизации MVC
public ActionResult Detail(string jobTitle, string jobCode)
{
var model = getModelFromDb(JobCode);
return View(model);
}
Проблема заключается в том, что мы ищем информацию карьеры кода работы не название, чтобы мы в конечном итоге с неиспользуемым параметром. Я не думаю, что это лучшая практика. Тем более, что вы можете ввести все, что хотите для названия карьеры, и получить детали работы. Такой URL-адрес все равно будет работать: mydomain.com/careers/yourmom/1234.
Я полагаю, что мы всегда могли искать карьеру по названию и коду, но это кажется бессмысленным, поскольку коды уникальны.
Есть ли лучший способ реализовать дополнительный параметр в URL-адресе и не допускать ввода недопустимых названий заданий в URL-адрес?
Одна вещь, которую вы могли бы попробовать, это сделать jobTitle необязательным, но это означает изменение формата URL-адреса на {JobCode}/{jobTitle}, и я думаю, что это не вариант? – Zippy
взгляните на этот вопрос и ответ http://stackoverflow.com/questions/24678045/routing-optional-parameters-in-asp-net-mvc-5. может использовать необязательный параметр в маршрутизации – Emil
Я предполагаю, что вам может понадобиться маршрут «slug» (где включение только «jobCode» приведет к URL-адресу с «кодом задания» и «jobTitle»)? Если да, обратитесь [этот ответ] (http://stackoverflow.com/questions/30349412/how-to-implement-url-rewriting-similar-to-so/30363600#30363600) –