我是ASP.NET MVC的初学者。
我有这些路线
www.site.com/Afficher/Livre/1
www.site.com/Afficher/Auteur/2
我用一个动作写了一个One控制器。总是路由中的第二个动作.MapRoute总是在id
中得到一个null控制器文件: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 }
);
答案 0 :(得分:0)
如果要通过url传递参数,则其名称在ASP.NET代码的三个位置应相同:url
和defaults
参数MapRoute
和也在行动参数。您更改了url
和操作参数,但忘记将id
替换为idAuteur
参数中的defaults
。如果您这样做,您的代码应该有效。
但更重要的是,看起来你正在为每个动作创建自己的MapRoute。你没有必要。只需将MapRoute保留为名称Default
,并在操作id
和Auteur
中将参数名称更改为Livre
。