Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用url路由将参数id传递给sql查询_Asp.net_Sql_C# 4.0 - Fatal编程技术网

Asp.net 使用url路由将参数id传递给sql查询

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

我是一名asp.net开发新手

尝试创建我的第一个简单新闻门户页面

以下是我所拥有的:

  • 数据库
  • Admin_News.aspx将新闻添加到数据库中
  • Default.aspx以显示标题可链接的所有新闻
  • NewsDetails.aspx以在他们单击Default.aspx中的标题时按ID显示详细信息
我是怎么做到的:

在Default.aspx中,我使用了以下代码:

<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")%>'