2013-01-15 73 views
5

有什么办法可以通过ASP.Net Web应用程序(而不是MVC)中的路径(URL)将参数传递给用户控件/页面。传递参数ASP.Net

http://abc.com/news/para-1/para-2 其中para-1para-2是参数。

+4

为什么接近的选票?这个问题很清楚。 – zmbq

+0

哪个ASP.NET版本?路由在V4中支持得好多了+ –

+0

http://stackoverflow.com/questions/10659199/passing-arguments-to-an-asp-net-page –

回答

5

你在找什么叫Routing

如果您使用的是.NET 4+,那么您可以阅读如何在MSDN的Web窗体应用程序中实现它。

您的规则基本上是归结到这一点,假设news.aspx是你想去的地方:

routes.MapPageRoute("NewsRoute", 
    "News/{arg1}/{arg2}", 
    "~/news.aspx"); 

然后可以继续访问使用下列方法的值:

Page.RouteData.Values["arg1"] 
<asp:Literal ID="Literal" Text="<%$RouteValue:arg1%>" runat="server"></asp:Literal> 

如果你不使用.NET 4+,Scott Hanselman写了大约ASP.NET FriendlyUrls,它在NuGet中可用。

+0

显然这不适用于用户控件?无论如何,我可以在用户控件上获得此工作 – ravisilva

+0

您可以使用'HttpContext.Current.Request.RequestContext.RouteData'从应用程序中的任何位置获取路径数据。 –

0

你可以尝试使用QueryStrings

重定向你的网页是这样的:

Response.Redirect("Webform2.aspx?Name=" + 
this.txtName.Text + "&LastName=" + 
this.txtLastName.Text); 

和你的新页面上得到这样的价值观:

private void Page_Load(object sender, System.EventArgs e) 
{ 
    this.txtBox1.Text = Request.QueryString["Name"]; 
    this.txtBox2.Text = Request.QueryString["LastName"]; 
}