Asp.net mvc 在VB.NET MVC视图中创建URL时出现问题
我正试图从数据库中写出动物。我看到的所有创建视图页面的示例在URL中都有硬编码的“节点”。我可以让我的第一个视图工作,但我的第二个视图没有写出正确的URL以转到第三个视图。例如,我希望我的URL是:Asp.net mvc 在VB.NET MVC视图中创建URL时出现问题,asp.net-mvc,vb.net,view,Asp.net Mvc,Vb.net,View,我正试图从数据库中写出动物。我看到的所有创建视图页面的示例在URL中都有硬编码的“节点”。我可以让我的第一个视图工作,但我的第二个视图没有写出正确的URL以转到第三个视图。例如,我希望我的URL是: /animals/ /animals/canines/ /animals/canines/schnauzer 我有默认的路线设置: > routes.MapRoute( _ > "Default", _ > "{control
/animals/
/animals/canines/
/animals/canines/schnauzer
我有默认的路线设置:
> routes.MapRoute( _
> "Default", _
> "{controller}/{action}/{id}", _
> New With {.controller = "Home", .action = "Index", .id =
> UrlParameter.Optional} _
> )
第一个URL非常好用,我可以在第一个URL上列出动物组以及到第二个URL的正确链接。我的做法如下:
for each animal in model
Html.ActionLink(animal.animal_name,animal.animal_name.Trim)
next
我还可以在第二个页面上写出犬科动物组(因此我知道我的模型正在工作),但是第二个“犬科动物”页面上的操作会丢失URL中的“犬科动物”,因此呈现为:
我已经尝试了我能想到的所有方法来写出链接,包括:
还有一些不值得展示的-D
。。。我猜我在路线上遗漏了什么,但那是什么?这不可能是因为我必须知道我在每个页面上的路径才能写出URL-可以吗
提前感谢您的帮助 您配置的路由查找三个组件:控制器、操作和id。 在您的例子/animals/schnauzer中,就HTTP路由(和链接生成)而言,您要寻找的不仅仅是一个路由元素。它将/动物/犬科动物视为两个不同的值。 如果希望允许类似的路由,请将其指定为:
routes.mapRoute("familyspecies", "animals/{family}/{species}", new { controller = "Home", action = "Animals", Species = UrlParameter.Optional});
把家族和物种传给你的行动
public ActionResult Animals(string family, string species){...}
或
使用通配符路由将操作后的所有内容定向到id
routes.MapRoute("{controller}/{action}/{*id}");
public ActionResult Animals(string family, string species){...}
routes.MapRoute("{controller}/{action}/{*id}");