为什么创建路径时URL会发生变化?

时间:2017-07-13 20:16:32

标签: asp.net-mvc url-routing

我有一个ASP.NET MVC5项目,在视图中,我有一个像这样的链接......

<a href="@Url.Action("Partner", "Home", new {id = Model.PartnerID})">
  ...loads of markup here...
</a>

这很好用,并为我提供了/Home/Partner/100

形式的网址

但是,如果我为行动添加路线......

routes.MapRoute("Partner", "Partner", new { controller = "Home", action = "Partner" });

...然后,网址呈现为/Partner?id=100

有没有办法获取表格/Partner/100的网址?

3 个答案:

答案 0 :(得分:1)

您的路线定义需要包含const variable1 = function obj(someParam){//constructor function if(obj.caller === this.constructor.prototype.variable2ID){ if(/*some stuff*/){ /*some setup using the this keyword*/ }else return this.constructor.prototype.variable2ID(document).ready(someParam); }else{ return Object.create(null); } } //I'll be fine with the long ass get the prototype thing, //it's only used in this specific part of the code (which is about 1/200th of it) 的分段。

id

答案 1 :(得分:0)

您可以创建所需的地图路线,如下所示。

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

答案 2 :(得分:-1)

您可以将条目放在Global.asax.cs中,如下所示:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


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



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

}

注意:将代码放在global.ascx文件中的顺序非常重要。

<强> Additional Official Info:

创建新的ASP.NET MVC应用程序时,应用程序已配置为使用ASP.NET路由。 ASP.NET路由设置在两个地方。 首先,在应用程序的Web配置文件(Web.config文件)中启用ASP.NET路由。

配置文件中有四个与路由相关的部分:system.web.httpModules部分,system.web.httpHandlers部分,system.webserver.modules部分和system.webserver.handlers部分。请注意不要删除这些部分,因为如果没有这些部分,路由将不再有效。

其次,更重要的是,在应用程序的Global.asax文件中创建了一个路由表。 Global.asax文件是一个特殊文件,包含ASP.NET应用程序生命周期事件的事件处理程序。路径表是在Application Start事件期间创建的。