我是初学者asp.net开发者
尝试创建我的第一个简单的新闻门户页面。
这就是我所拥有的:
我是怎么做到的:
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>
所以我正在做的是根据网址中的.aspx?id =中的ID显示文章。 一切都工作正常..直到我使用网址路由。
我更改/添加了一些代码来改变url的结构我不希望它看起来像〜/ NewsDetails.aspx?id = 1 我希望像〜/ 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但内部没有数据..空的我只能看到母版页的设计。
我很感激你的任何帮助我应该怎样做才能显示新闻,url中的id值会转到字符串id变量但是我不知道如何将它传递给sql查询(我不是确定这是否是问题)
答案 0 :(得分:1)
您不应在NewsDetails页面的asp:QueryStringParameter
中使用asp:SqlDataSource
,因为您的参数不再位于QueryString中。 QueryString是问号后面的URL的一部分。
使用此链接了解如何将参数传递给select语句:
答案 1 :(得分:0)
connectionstring =“&lt;%$ ConnectionStrings:MyConnection%&gt;”
selectcommand =“SELECT Name,Age FROM ContactInfo where 状态= @ StateCode“&GT;