私は初心者の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 クエリに渡す方法がわかりません (これがが問題です)