1

私は初心者の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 コード:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MoneyHolderConnectionString %>" 
        SelectCommand="SELECT [title], [news], [imageurl], [detail] FROM [News] WHERE ([id] = @id)">
        <SelectParameters>
            <asp:QueryStringParameter Name="id" QueryStringField="id" Type="Int64" />
        </SelectParameters>
    </asp:SqlDataSource>


    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource2">
            <HeaderTemplate>

            </HeaderTemplate>
            <ItemTemplate>
               <h1 align="right"><br />
                 <strong><p style="color:#000">
                     <%# DataBinder.Eval(Container.DataItem, "title")%>
                 </strong></h1><p/><br />
                 <br />

                 <p align="center"><img src='<%# DataBinder.Eval(Container.DataItem, "imageurl")%>'/>
                 <p/>
                 <br />
                 <br />

                 <p id="detail" align="right" style="font-size:25px"><%# DataBinder.Eval(Container.DataItem, "detail")%><p/>
                 <br />

            </ItemTemplate>
            <FooterTemplate>

            </FooterTemplate>
  </asp:Repeater>

だから私がやっていることは、URLの .aspx?id= のIDに従って記事を表示することです。URLルーティングを使用するまで、すべてが正常に機能していました。

~/NewsDetails.aspx?id=1 のように表示されたくない URL の構造を変更するためにいくつかのコードを変更/追加しました。代わりに ~/News/1 のようになりたいのですが、同じ結果が得られます。

そこで、次のコードを Global.asax に追加しました。

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routeCollection)
{
    routeCollection.MapPageRoute("RouteForNews", "News/{id}", "~/NewsDetails.aspx");
}

そして、このコードを NewsDetails.aspx.cs のコード ビハインドに追加しました。

string id = Page.RouteData.Values["id"].ToString();

NewsDetails.aspx の NavigateUrl を次のように変更しました。

NavigateUrl='<%#"~/News/" + Eval("id")%>'

Default.aspxを開くと、〜/ News / "id number"にリンク可能なタイトルでニュースが表示され、タイトルをクリックすると、NewsDetails.aspxが/ News / idnumberのリンクで開きますが、内部にはデータがありません..its empty マスターページのデザインしか見えません。

ニュースを表示するために何をすべきか、あなたからの助けをいただければ幸いです。URL の id 値は文字列 id 変数になりますが、それを SQL クエリに渡す方法がわかりません (これがが問題です)

4

2 に答える 2

1

パラメータが QueryString に含まれなくなったため、NewsDetails ページで を使用しないasp:QueryStringParameterでください。asp:SqlDataSourceQueryString は、疑問符の後に続く URL の一部です。

このリンクを使用して、select ステートメントにパラメーターを渡す方法を確認します。

SqlDataSourceのSelectCommandに変数を渡す方法は?

于 2012-07-08T12:48:09.853 に答える
0

connectionstring="<%$ ConnectionStrings:MyConnection %>"
selectcommand="SELECT Name, Age FROM ContactInfo where State=@StateCode">

于 2013-07-11T06:31:20.063 に答える