【问题标题】:URL Rewriting in C#C# 中的 URL 重写
【发布时间】:2010-06-29 09:39:37
【问题描述】:

我注意到与我要问的问题类似的问题,但我觉得我的问题还没有真正得到回答。

我为客户创建了一个管理面板。他有能力创建目的地(即罗马、巴塞罗那、坎昆)

每个目的地的所有信息都是动态的,目前如下所示:

/Destination.aspx?id=1

我希望它看起来像这样:

/罗马/或/坎昆/

这合理吗?

【问题讨论】:

    标签: c# dynamic url-rewriting


    【解决方案1】:

    是的,很有可能。如果你使用routing feature in ASP.NET,那么实际上很容易让它工作(你知道,路由不仅仅适用于 MVC!)

    在 Global.asax.cs 中:

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }
    
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("",
            "Destinations/{name}",
            "~/Destinations.aspx");
    }
    

    然后在您的目的地页面中,您可以像这样访问参数:

    private void Destinations_Load(object sender, EventArgs e)
    {
        string destinationName = Convert.ToString(RouteData.Values["name"]);
        // load destination with name destinationName...
    }
    

    【讨论】:

    • 嗯..还是有点不清楚。我创建了 App_Code/Global.asax.cs 并添加了上层代码。然后在 Destination.aspx.cs 我添加了后面的代码,它在 RouteData 下出错,说我无法将对象转换为字符串。
    • 实际上我修复了错误,但我不确定全局页面是否被调用或者我应该如何处理 Destinations_Load 代码
    • @Bry4n:您的正常 Destinations.aspx 页面是如何工作的?您获取 ID 并从数据库中加载信息,或者我猜的。在这种情况下,您是根据名称而不是标识符加载信息,但基本原理相同。
    • 是的,我使用这个“int q = Convert.ToInt32(Request.QueryString["id"]);”但是,当您输入 /Rome/ 时,您应该转到 Destination?id=2 或其他任何内容,但顶部的 URL 仍然显示 /Rome/。我也将其更改为 routes.MapPageRoute("","{Destination}","~/Destinations.aspx");如果允许的话?很抱歉让我很困惑,我之前没有处理过这个问题,也不太确定我错过了或没有采取哪一步。
    • 另外我认为页面甚至没有加载 Destions_Load 因为 Global.asax.cs 没有被导入或包含在任何地方
    【解决方案2】:

    你应该使用ASP.Net Routing,它可以独立于MVC框架使用。

    【讨论】:

      【解决方案3】:

      检查 ASP MVC 框架here。用 MVC 框架很容易拥有一个 RESTful 接口。使用该框架,您可以使用 URL“目录”作为参数。

      你可以有类似 /Vacation/Places/Cancun 的东西,在 Vacation 控制器下你可以有这样的方法:

      
       public void Places(string place)
       {
           if(place.Equals("Cancun"))
           {
                    return View("Cancun");
           }
           else if(place.Equals("Puerto Rico"))
           {
               .......
           }
           ...............
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 2019-07-14
        • 2011-04-08
        • 2011-10-23
        • 2012-03-18
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        相关资源
        最近更新 更多