Сопоставление значений строки запроса по умолчанию?

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

У меня есть эта карта маршрута (обратите внимание, что topicName игнорируется):

 routes.MapRoute(
                "Topics", // Route name
               "Topic/{topicName}/{action}",
                new { controller = "Topic", action = "AddQuestion" });  
  

И я хочу, чтобы он по умолчанию отображался на этот URL:
http://localhost:51421/Topic/SomeName/AddQuestion?topicId=1 (или, если это невозможно, по этому URL:http://localhost:51421/Topic/SomeName/AddQuestion/topicId/1 )
(который должен вызвать это действие:

 public ActionResult AddQuestion(int topicId)
        {
            return View();
        }  
  

)

Но в любом случае мне нужны все эти данные в URL.
Каков правильный способ сделать это?

Комментарии:

1. Что вы подразумеваете под значением URL по умолчанию ? Какой URL-адрес вы вводите в браузере?

2. Нет. Я хочу, чтобы localhost: 51421 вызывал AddQuestion темы с TopicID = 1

Ответ №1:

Вы могли бы добавить маршрут по умолчанию:

 routes.MapRoute(
    "Topics",
    "Topic/{topicName}/{action}/{topicId}",
    new { controller = "Topic", action = "AddQuestion", topicId = "1" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{topicId}",
    new { controller = "Topic", action = "AddQuestion", topicId = "1" }
);
  

Комментарии:

1. Я целую вечность пытался изменить тот, который вы дали мне ранее, вместо того, чтобы просто добавлять новый.. Потребуется некоторое время, чтобы освоиться с этим .. 🙂 Еще раз спасибо.