Можно ли добавить дополнительные поля в URL при обработке запроса в asp.net mvc2.0? - PullRequest
0 голосов
/ 19 ноября 2011

Это может быть странная ситуация, но вот моя текущая проблема:

Я создаю приложение, которое управляется средой (т.е. Dev / Staging / Live)

Так как пользовательприходит в приложение в первый раз (myapp.local), и я обрабатываю маршрут по умолчанию:

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}", 
            new { controller = "Home", environment = string.Empty, action = "Index", id = UrlParameter.Optional } 
        );

, было бы неплохо добавить среду в URL, так что это:

        myapp.local

становится таким:

        myapp.local/environment/development

Есть ли способ сделать это с помощью C # Asp.Net MVC 2.0?

Спасибо.

1 Ответ

0 голосов
/ 19 ноября 2011

Вы всегда можете добавить токены маршрута:

routes.MapRoute(
    "Default",
    "environment/{env}/{controller}/{action}/{id}", 
    new { 
        controller = "Home", 
        env = "development", 
        action = "Index", 
        id = UrlParameter.Optional 
    } 
);

Как говорится, добавление среды к вашим маршрутам - это УЖАСНАЯ идея. Я искренне надеюсь, что вы никогда не сделаете ничего подобного, и ваши действия контроллера никогда не будут выглядеть так:

public ActionResult Index(string env)
{
    string value = "default";
    if (env == "development")
    {
        value = "some value for dev";
    } 
    else if (env == "staging")
    {
        value = "some value for staging";
    }
    else if (env == "live")
    {
        value = "some value for live";
    }
    else
    {
        throw new Exception("Unknown environment");
    }

    ViewBag.Message = value;
    return View();
}
...