Skip to main content
 首页 » 编程设计

c#之RouteCollection.MapRoute 在传递给方法时没有出现

2024年08月06日38yxwkf

路由配置:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
        // Bootstrap routes 
 
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
 
        // Field routes 
 
            FieldRoutes fieldRoutes = new FieldRoutes(); 
 
            fieldRoutes.DefineCreate( ref routes ); 
            fieldRoutes.DefineDetails( ref routes ); 
            fieldRoutes.DefineEdit( ref routes ); 
            fieldRoutes.DefineDelete( ref routes ); 
 
        // ... 

ICRUDRoutes 接口(interface):

public interface ICRUDRoutes 
{ 
    void DefineCreate( ref RouteCollection routes ); 
    void DefineDetails( ref RouteCollection routes ); 
    void DefineList( ref RouteCollection routes ); 
    void DefineEdit( ref RouteCollection routes ); 
    void DefineDelete( ref RouteCollection routes ); 
} 

FieldRoute 类

public class FieldRoutes : ICRUDRoutes 
{ 
    public void DefineCreate( ref RouteCollection routes ) 
    { 
        routes.MapRoute( 
            name: "Soft delete a field", 
            url: "field/delete/{fieldID}", 
            defaults: new { controller = "Field", action = "Delete" }, 
            constraints: new { id = RoutingConstraints.ID } 
        ); 
        // routes.MapRoute does not exist as a function, but it exists in the RouteConfig, how does this work? 
    } 
 
    // ... 

在将 Routecollection 作为 ref 或其他方式传递后,routes.MapRoute 不作为函数存在,但它存在于 RouteConfig,这是如何工作的?

请您参考如下方法:

我缺少命名空间:

using System.Web.Mvc; 

这是因为MapRoute 是一个扩展方法。为了让它出现在对象上,您需要导入扩展方法所在的命名空间。