2015-01-14 3 views
1

MVC 6 - vNext с Ядром 5,0MVC vNext маршрутизация и ActionLink

Я использую маршрут в моем проекте, это выглядит следующим образом:

routes.MapRoute(
    name: "Default", 
    template: "{firstId}/{secondId}", 
    defaults: new { controller = "Window", action = "Index" }); 

В одном из моих взглядов я пытаюсь создать ActionLink так:

@Html.ActionLink("Title", "Index", "Window", new { firstId = "a", secondId = "b" }, null); 

Это ActionLink возвращает следующий якорь:

<a href="/Window?firstId=a&secondId=b">Test</a> 

Но то, что я ожидал это:

<a href="https://stackoverflow.com/a/b">Test</a> 

Можно ли очистить это?

+0

, что ваш единственный путь? –

+0

@ErikFunkenbusch Да, это мой единственный маршрут. – Swag

+0

Я не понимаю, как это возможно, если это ваш единственный маршрут. Вы должны получить 404, если маршрут не соответствует. У вас даже нет маршрута по умолчанию? –

ответ

-1

Вот маршрут:

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

Который даст следующее:

<a href="Window/Index/a/b">Test</a> 
+0

Решил мою собственную проблему с форматами ответов, поэтому изменил мой комментарий. – wigs

+0

В вопросе, который вы задаете для маршрута: '/ a/b', ваш ответ отображает' window/index/a/b'. Я думаю, что если вы посмотрите на мой комментарий по вашему вопросу, он удалит «window/index» – ediblecode

+0

@jumpingcode. Думаю, в будущем мне нужно сначала дважды проверить исходный плакат, чтобы обеспечить правильный ответ: a/b vs его просто путают? Будет ли это предотвращать ваш downvote? – wigs

2

Я думаю, что проблема может быть просто, что вы используете template свойство вместо url. Посмотрев на MSDN Не удалось найти template собственности на Route класс, что бы вы не сделали?

В любом случае, я думаю, что это должно работать (не обеспечивая вас никаких других маршрутов, определенных как вы сказали):

routes.MapRoute(
    name: "Default", 
    url: "{firstId}/{secondId}", 
    defaults: new { controller = "Window", action = "Index" } 
); 
+0

Intellisense показывает «шаблон», а не «url». Может быть, потому, что я использую MVC 6 (см .: http://i.gyazo.com/d18674e5d6291380322573cc25fb3e9c.png) Когда я нахожусь «a/b» вручную (по URL-адресу), кажется, работает. – Swag

+0

@ TheOddGuy да, это своего рода большая вещь. Возможно, стоит изменить ваш вопрос. – ediblecode

+0

@jumpingcode Да, я виноват, я думаю, что я новичок в MVC :-) Спасибо за помощь. – Swag