Asp.net 使用url路由将参数id传递给sql查询
我是一名asp.net开发新手 尝试创建我的第一个简单新闻门户页面 以下是我所拥有的:Asp.net 使用url路由将参数id传递给sql查询,asp.net,sql,c#-4.0,Asp.net,Sql,C# 4.0,我是一名asp.net开发新手 尝试创建我的第一个简单新闻门户页面 以下是我所拥有的: 数据库 Admin_News.aspx将新闻添加到数据库中 Default.aspx以显示标题可链接的所有新闻 NewsDetails.aspx以在他们单击Default.aspx中的标题时按ID显示详细信息 我是怎么做到的: 在Default.aspx中,我使用了以下代码: <div> <asp:Repeater ID="Repeater1" runat="server" Da
- 数据库
- Admin_News.aspx将新闻添加到数据库中
- Default.aspx以显示标题可链接的所有新闻
- NewsDetails.aspx以在他们单击Default.aspx中的标题时按ID显示详细信息
<div>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table border="1">
<tr>
<td>
<b>title</b>
</td>
<td>
<b>news</b>
</td>
<td>
<b>imges</b>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HyperLink runat="server" ID="hl" NavigateUrl='<%#"~/NewsDetails.aspx?id=" + Eval("id")%>' Text='<%# Eval("title") %>'></asp:HyperLink>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "news")%>
</td>
<td>
<img alt="" src='<%# DataBinder.Eval(Container.DataItem, "imageurl")%>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MoneyHolderConnectionString %>"
SelectCommand="SELECT [id], [title], [news], [imageurl], [detail] FROM [News]"></asp:SqlDataSource>
</div>
我将此代码添加到NewsDetails.aspx.cs代码中:
string id = Page.RouteData.Values["id"].ToString();
我将NewsDetails.aspx中的NavigateUrl更改为:
NavigateUrl='<%#"~/News/" + Eval("id")%>'
NavigateUrl=''
现在,当我打开Default.aspx时,新闻显示的标题可链接到~/news/“id number”,当我单击标题时,NewsDetails.aspx打开的标题为/news/id number,但里面没有数据。它是空的,我只能看到母版页的设计
如果您能提供帮助,我将不胜感激。我应该如何显示新闻,url中的id值,它将转到字符串id变量,但我不知道如何将其传递到sql查询(我不确定这是否是问题)您不应该在NewsDetails页面的
asp:SqlDataSource
中使用asp:QueryStringParameter
,因为您的参数不再在查询字符串中。查询字符串是URL中问号后面的部分
使用此链接了解如何将参数传递给select语句:
您不应该在NewsDetails页面的
asp:SqlDataSource
中使用asp:QueryString参数,因为您的参数不再在QueryString中。查询字符串是URL中问号后面的部分
使用此链接了解如何将参数传递给select语句:
connectionstring=“”
selectcommand=“从ContactInfo中选择姓名、年龄,其中
State=@StateCode“>
connectionstring=“”
selectcommand=“从ContactInfo中选择姓名、年龄,其中
State=@StateCode“>
我在NewsDetails.aspx.cs的代码后面添加了此代码:SqlDataSource1.SelectParameters.Add(“@id”,id)
并将selectparameter更改为:
我在“/”应用程序中运行页面:服务器错误时出现此错误。将数据类型nvarchar转换为bigint时出错。描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的详细信息及其源代码。我删除了selectparameter代码,并在.cs:SqlDataSource2.SelectParameters.Add(“id”,DbType.Int32,id)中添加了此代码代码>成功了!感谢alotI在NewsDetails.aspx.cs的代码后面添加了此代码:SqlDataSource1.SelectParameters.Add(“@id”,id)
并将selectparameter更改为:
我在“/”应用程序中运行页面:服务器错误时出现此错误。将数据类型nvarchar转换为bigint时出错。描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的详细信息及其源代码。我删除了selectparameter代码,并在.cs:SqlDataSource2.SelectParameters.Add(“id”,DbType.Int32,id)中添加了此代码代码>成功了!非常感谢
string id = Page.RouteData.Values["id"].ToString();
NavigateUrl='<%#"~/News/" + Eval("id")%>'