C# C语言中的URL重写#

C# C语言中的URL重写#,c#,dynamic,url-rewriting,C#,Dynamic,Url Rewriting,我注意到类似的问题,我必须问,但我觉得我还没有真正得到我的问题回答 我为一个客户创建了一个管理面板。他有能力创建目的地(即罗马、巴塞罗那、坎昆) 每个目的地的所有信息都是动态的,当前看起来如下所示: /Destination.aspx?id=1 我希望它看起来像这样: /罗马/或坎昆/ 这是否合理?检查ASP MVC框架。使用MVC框架很容易获得RESTful接口。使用该框架,您可以使用URL“目录”作为参数 您可以使用/Vacation/Places/Cancun之类的工具,在假期控制器下,您

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

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

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

/Destination.aspx?id=1

我希望它看起来像这样:

/罗马/或坎昆/


这是否合理?

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

您可以使用/Vacation/Places/Cancun之类的工具,在假期控制器下,您可以使用以下方法:


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

您应该使用,它可以独立于MVC框架使用。

是的,这是完全可能的。如果您使用,那么实际上很容易让它工作(您知道,路由不仅仅适用于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\u加载code@Bry4n:您的普通Destinations.aspx页面如何工作?你拿着ID,从数据库或者我猜的东西中加载信息。在本例中,您是基于名称而不是标识符加载信息,但这是相同的基本原则。是的,我使用“intq=Convert.ToInt32(Request.QueryString[“id”]);”但是当您键入/Rome/您应该去的目的地?id=2或其他什么,但顶部的URL仍然显示/Rome/。我还将其更改为routes.MapPageRoute(“,”{Destination}“,“~/Destinations.aspx”);如果允许的话?很抱歉,我之前没有做过这方面的工作,也不确定我错过了或没有采取什么措施。而且我认为这些页面甚至没有加载Destins_Load,因为Global.asax.cs没有被导入或包含在任何地方