Маршрут MVC, параметры запроса - PullRequest
0 голосов
/ 20 октября 2011

Два простых маршрута mvc3, имя пользователя и значение по умолчанию перехватывать все.

routes.MapRoute(
    "Users", 
    "{username}",  
    new { controller = "User", action = "Index"} 
);

routes.MapRoute(
    "Default", 
    "{*url}", 
    new { controller = "Default", action = "Index" }  
);

Как сделать так, чтобы маршрут пользователя принимал любые дополнительные параметры запроса, такие как / username? Ref = facebook. В этом примере только главы по умолчаниюroute ...

РЕДАКТИРОВАТЬ: МОЯ ПЛОХАЯ, была немного удивлена ​​этим, поскольку это не должно заботиться о параметрах запроса.Решение = очистить и восстановить проект.

Ответы [ 3 ]

0 голосов
/ 20 октября 2011

Добавьте параметр в маршрут и не забудьте добавить его в свое действие.Я бы предложил добавить что-то в начало URL-адресов, чтобы сделать его более конкретным (в случае, если вы добавите какие-либо другие маршруты в ваш проект).*

public ActionResult Index(ref)
{
    if (string.IsNullOrEmpty(ref))
    {
        //TODO: add your logic here
    }
}

Это должно принять /users/someusername/facebook.com ИЛИ /users/someusername?ref=facebook.com

0 голосов
/ 20 октября 2011

Параметры строки запроса, такие как ?ref=, не являются частью определения сегмента маршрута. Например, маршрут llike:

routes.MapRoute(
                "Default", 
                "{controller}/{action}", 
                new { controller = "Home", action = "Index"}
            );

Будет соответствовать URL-адресу, например: /Home/Index?ref=facebook.

Так что вам не нужно менять маршруты, чтобы приспособить специальную строку запроса. Обработка их в ваших Действиях / Контроллере - это отдельная история, потому что вы должны будете следовать правилам CoC Convention по конфигурации и соответствовать параметру Query String в ваших действиях.

0 голосов
/ 20 октября 2011

Обновите свой первый маршрут следующим образом:

routes.MapRoute(
    "Users", 
    "/username",  
    new { controller = "User", action = "Index"} 
);

В вашем действии контроллера добавьте параметр «ref», чтобы MVC автоматически передавал строку запроса «ref» вашему контроллеру.

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