0
我是ASP.NET MVC的初學者。爲什麼第二個route.MapRoute同一個控制器得到一個空ID
我有這些路線
www.site.com/Afficher/Livre/1
www.site.com/Afficher/Auteur/2
我寫了一個控制器2個動作。總是在route.MapRoute第二動作總是得到一個空的ID
控制器文件:AfficherController
public string Auteurs()
{
return "liste des auteurs";
}
public string Auteur(int? idAuteur)
{
return "liste des livres de l'auteur "+idAuteur+" sont :";
}
public string Livre(int idlivre)
{
return "details du livre " + idlivre + " est : ";
}
路由文件
routes.MapRoute(
name: "afficherLivre",
url: "{controller}/{action}/{idlivre}",
defaults: new { controller = "Afficher", action = "Livre", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "AfficherAuteur",
url: "{controller}/{action}/{idAuteur}",
defaults: new { controller = "Afficher", action = "Auteur", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Afficher", action = "Auteurs", id = UrlParameter.Optional }
);
嗨,歡迎來到StackOverflow。請您在提問時明確您的問題清楚易懂。這一個不是你應該編輯它。請閱讀:http://stackoverflow.com/help/how-to-ask – feedMe
您的路由定義沒有意義 - 所有3條路由都是相同的 - 它們接受0到3段,並且任何url都會匹配第一條和''/ Afficher/Auteur/2'會將'2'作爲一個值傳遞給名爲'idlivre'的參數 - 但是''Auteur''方法中沒有名爲'idlivre'的參數。 - 使用'id = UrlParameter.Optional'是沒有意義的,因爲你甚至沒有一個名爲'id'的參數 –
如果你想要特定的路由,那麼第一個應該是'url:「Afficher/Livre/{idlivre}」,''與'idlivre = UrlParameter.Optional'和第二個'url:「Afficher/Auteur/{idAuteur}」,'idAuteur = UrlParameter.Optional',儘管什麼是重點。只需在方法'id'中設置參數並刪除前兩條路線 –