我是MVC的新手,所以请耐心等待我,因为我只在MS Tutorial的第二页(参见最后一个代码示例)。对于HelloWorldController,添加了以下MapRoute:
routes.MapRoute(
name: "Hello",
url: "{controller}/{action}/{name}/{id}");
我只是想知道,它是纯粹的模式匹配才能完成工作而名称“Hello”仅供我自己参考? 如果那么,是不是应该遵循命名约定,说MapRoute应该被称为HelloWorldWelcome,其中welcome是HelloWorldController.cs中的一个方法(见上面的链接)。或者我是迂腐吗?
答案 0 :(得分:4)
路由名称也由UrlHelper
类使用。例如:
var url = Url.Route("Hello", new
{
controller = "SomeController",
action = "SomeAction",
name = "charlie",
id = 123
});
这将生成匹配的网址。
使用属性路由时,此功能更有用。例如,如果在某些控制器上有一个操作:
[RoutePrefix("api/phonebook")]
public class PhonebookController
{
[HttpGet("contact/{id}", Name = "GetContact")]
public Contact GetContact(int id)
{
...
}
}
在其他代码中,您可以使用Url.Route("GetContact", new { id = 7 })
生成网址/api/phonebook/contact/7
。
答案 1 :(得分:1)
请参阅ASP.NET MVC Routing Overview
的详细信息名称属性用于从您的视图或带有路径名称的控制器中调用路由。
从 ActionLink ,您可以使用路由:
Html.RouteLink("link_text", "route_name", route_parameters)
答案 2 :(得分:0)
问题似乎没有得到如此明确的回答(" Hello"路由如何被" HelloWorld"控制器选择?),但作为Asp.Net MV5 begginer,我根据路由器url属性和URL参数之间的匹配,可以看到路由被默认选择 。
答案 3 :(得分:0)
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "ImageScan", action = "ScanImage", id = UrlParameter.Optional },
namespaces: new[] { "WebApplication3.Controllers" }
);
我发现错误: 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/Views/ImageScan/ScanImage.cshtml