2016-02-18 6 views
0

Я пытаюсь создать проект ASP.NET MVC 4.5 для использования URL-адресов поисковой системы. Я использую следующее сопоставление маршрутов.URL-адрес маршрутизации требует/Главная страница/Страница? Page = 1 вместо/Главная/Страница/1

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}/{title}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional } 
); 

Намерение состоит в том, чтобы я мог создать URL-адреса, как это:

Mysite.com/Home/Page/1/this-title-bit-is-just-for-show

но это не удается, и я должен использовать URL, как это:

Mysite.com/Home/Page?page=1

В случае имеет значение, контроллер действий, который указывает эта ссылка на ниже:

public ActionResult Page(int page) 
{ 
    PostModel pm = new PostModel(page); 
    return View(pm); 
} 

И я генерирующими URL, как это:

<a href="@Url.Action("Page", "Home", new { page = 1 })">1</a> 

Может кто-нибудь сказать мне, где я идет не так?

+0

Измените метод 'общественного ActionResult Page (интермедиат идентификатор)' или изменить маршрут к «url:» {controller}/{action}/{page}/{title} ",' И обратите внимание, что только последний параметр может быть помечен как 'UrlParameter.Optional' –

+0

э-э ... вы задаете вопрос по теме с тегами? Это должно быть неправильно. Каким-то образом. – Will

ответ

2

Вместо

<a href="@Url.Action("Page", "Home", new { page = 1 })">1</a> 

Использование

<a href="@Url.Action("Page", "Home", new { id = 1 })">1</a> //instead of page use id here 

и изменить действие метода, как показано ниже: -

public ActionResult Page(int id) //instead of page use id here 
{ 
    PostModel pm = new PostModel(id); 
    return View(pm); 
} 
+0

Спасибо за помощь, это исправлено: – MSOACC

+0

@MSOACC ...... :-) –

Смежные вопросы