我正在使用Url重寫的asp.net應用程序。我的網頁上的名字是NewsDetail.aspx其代碼是:作爲如何在asp.net中使用Url重寫
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" ID="Content1" runat="server">
<div style="min-height: 150px; padding: 10px 10px;">
<marquee behavior="scroll" direction="up" scrollamount="2" height="150">
<asp:ListView ID="listNews" runat="server">
<ItemTemplate>
<p>
<a href="NewsDetail.aspx?ID=<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
</p>
</ItemTemplate>
</asp:ListView>
</marquee>
</div>
</asp:Content>
我有綁定列表視圖這在Default.aspx的好康頁面加載事件:
DataTable dt = new DataTable();
dt = new Process_News().SelectPublishNews();
if (dt.Rows.Count > 0)
{
listNews.DataSource = dt;
listNews.DataBind();
}
我想,當一個項目用戶點擊在隨後「listNews」列表視圖應該被重定向到NewsDetail.aspx WebPage.If用戶單擊項,它的ID = 1,則地址欄是顯示
http://AtharvaJournal.com/NewsDetail.aspx?ID=1
但我想顯示爲 http://AtharvaJournal.com/News/1
爲此,我做了以下在Global.asax文件中的代碼:
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("News", "News/{Id}", "~/NewsDetail.aspx");
}
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
在NewsDetail.aspx頁我已經做了下面的代碼:
if (!string.IsNullOrEmpty(Page.RouteData.Values["Id"].ToString()))
{
string id = Page.RouteData.Values["Id"].ToString();
long ID = Convert.ToInt64(Page.RouteData.Values["Id"].ToString());
dt = new Process_News().SelectByID(ID);
if (dt.Rows.Count > 0)
{
hTitle.InnerText = dt.Rows[0]["Title"].ToString();
PDetail.InnerText = Server.HtmlDecode(dt.Rows[0]["Contents"].ToString());
}
}
現在,當我寫在下面變薄我的地址欄:(http://AtharvaJournal.com/News/1) 然後它運行良好,但是當我直接點擊「listNews」ListView中的任何項目時它會顯示以下異常: -
"Object reference not set to an instance of an object"
請幫我這裏。
哪條線路導致此錯誤? – Kuzgun
當程序控制達到:if(!string.IsNullOrEmpty(Page.RouteData.Values [「Id」]。ToString())) {}這裏它甩錯了 –