【发布时间】:2010-06-29 09:39:37
【问题描述】:
我注意到与我要问的问题类似的问题,但我觉得我的问题还没有真正得到回答。
我为客户创建了一个管理面板。他有能力创建目的地(即罗马、巴塞罗那、坎昆)
每个目的地的所有信息都是动态的,目前如下所示:
/Destination.aspx?id=1
我希望它看起来像这样:
/罗马/或/坎昆/
这合理吗?
【问题讨论】:
标签: c# dynamic url-rewriting
我注意到与我要问的问题类似的问题,但我觉得我的问题还没有真正得到回答。
我为客户创建了一个管理面板。他有能力创建目的地(即罗马、巴塞罗那、坎昆)
每个目的地的所有信息都是动态的,目前如下所示:
/Destination.aspx?id=1
我希望它看起来像这样:
/罗马/或/坎昆/
这合理吗?
【问题讨论】:
标签: c# dynamic url-rewriting
是的,很有可能。如果你使用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...
}
【讨论】:
你应该使用ASP.Net Routing,它可以独立于MVC框架使用。
【讨论】:
检查 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"))
{
.......
}
...............
}
【讨论】: