Я работаю с некоторым сторонним программным обеспечением, которое создает параметры строки запроса с дефисами в их именах. Я смотрел на этот SO вопрос , и кажется, что их решение очень близко к тому, что мне нужно, но я слишком неосведомлен о базовых вещах MVC, чтобы понять, как адаптировать это, чтобы сделать то, что я необходимость. В идеале я хотел бы просто заменить дефисы подчеркиванием, и это было бы достаточно хорошим решением. Если есть что-то лучшее, мне интересно это услышать.
Пример URL, который я хочу обработать, таков:
http://localhost/app/Person/List?First-Name=Bob&My-Age=3
с этим контроллером:
public ActionResult List(string First_Name, int My_Age)
{
{...}
}
Повторим, я не могу изменить сгенерированную строку запроса, поэтому мне нужно каким-то образом поддерживать ее с моим контроллером. Но как?
Для справки ниже приведен пользовательский RouteHandler, который используется для обработки подчеркиваний в именах контроллеров и именах действий из SO-вопроса, на который я ссылался выше, что мы могли бы изменить, чтобы выполнить то, что я хочу:
public class HyphenatedRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_");
requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_");
return base.GetHttpHandler(requestContext);
}
}