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