Url 路由使用 ASP.NET

Url Routing using ASP.NET

我有:

<a href='News.aspx?Id=<%#Eval("Id") %>'>Read more</a>

我的查询字符串设置如下:

SqlConnection con = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand("Select * from Zaebancii where Id=@id", con);
SqlDataAdapter apd = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
cmd.Parameters.AddWithValue("@id", Page.Request.QueryString["Id"].ToString());
con.Open();
apd.Fill(ds, "Zaebancii");
cmd.ExecuteNonQuery();
con.Close();
FormView1.DataSource = ds;
FormView1.DataBind();

如何 url 重写,使 link 成为 news/{Id} 例如news/4/ 显示4的ID post 谢谢

将这些代码放入您的 global.asax

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}


public static void RegisterRoutes(RouteCollection routes)
{
     routes.MapPageRoute("", "news/{id}", "~/News.aspx");
}

你可以这样获取id;

RouteData.Values["id"];

您需要使用路由引擎。在您的 global.asax 中,您可以注册以下代码,但实际上,为此使用单独的 class。

RouteTable.Routes.MapPageRoute(routeName: "News", routeUrl: "news/{id}", physicalFile: "~/news.aspx", checkPhysicalUrlAccess: false, defaults: null, constraints: new RouteValueDictionary() { "id", "^\d*$" });

要生成 link,您可以使用下面的 id = 1 例如:

string href = RouteTable.Routes.GetVirtualPath(requestContext: null, name: "News", values = new RouteValueDictionary() { "id": "1" }).VirtualPath;