C# 如何在asp.net中使用Url重写
我正在使用Url重写的asp.net应用程序上工作。我的网页名为NewsDetail.aspx,其代码为:C# 如何在asp.net中使用Url重写,c#,asp.net,global-asax,C#,Asp.net,Global Asax,我正在使用Url重写的asp.net应用程序上工作。我的网页名为NewsDetail.aspx,其代码为: <asp:Content ContentPlaceHolderID="ContentPlaceHolder1" ID="Content1" runat="server"> <div style="min-height: 150px; padding: 10px 10px;"> <marquee behavior="scroll" direction
<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>
我希望当用户单击“listNews”Listview中的某个项目时,该项目应重定向到NewsDetail.aspx网页。如果用户单击ID=1的项目,则显示地址栏
http://AtharvaJournal.com/NewsDetail.aspx?ID=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());
}
}
现在,当我在我的地址栏中写下以下内容时:()
然后它运行良好,但当我直接单击“listNews”ListView中的任何项目时,它会显示以下异常:-
"Object reference not set to an instance of an object"
请帮帮我。您有两个问题:
首先,您的(第二个)url不使用路由表,请将url更改为http://AtharvaJournal.com/News/THE_ID
那里也有
或者使用此选项获取不带url映射的url的Id:
Request.QueryString["Id"]
其次,您正在检查Page.RouteData.Values[“Id”].ToString()
,而Page.RouteData.Values[“Id”]
为空
请尝试以下方法:
(string)Page.RouteData.Values["Id"]
你有两个问题:
首先,您的(第二个)url不使用路由表,请将url更改为http://AtharvaJournal.com/News/THE_ID
那里也有
或者使用此选项获取不带url映射的url的Id:
Request.QueryString["Id"]
其次,您正在检查Page.RouteData.Values[“Id”].ToString()
,而Page.RouteData.Values[“Id”]
为空
请尝试以下方法:
(string)Page.RouteData.Values["Id"]
你有两个问题:
首先,您的(第二个)url不使用路由表,请将url更改为http://AtharvaJournal.com/News/THE_ID
那里也有
或者使用此选项获取不带url映射的url的Id:
Request.QueryString["Id"]
其次,您正在检查Page.RouteData.Values[“Id”].ToString()
,而Page.RouteData.Values[“Id”]
为空
请尝试以下方法:
(string)Page.RouteData.Values["Id"]
你有两个问题:
首先,您的(第二个)url不使用路由表,请将url更改为http://AtharvaJournal.com/News/THE_ID
那里也有
或者使用此选项获取不带url映射的url的Id:
Request.QueryString["Id"]
其次,您正在检查Page.RouteData.Values[“Id”].ToString()
,而Page.RouteData.Values[“Id”]
为空
请尝试以下方法:
(string)Page.RouteData.Values["Id"]
我找到了一个更好的办法来解决这个问题。在名为“listnews”的ListView中,itemtemplate中编写了以下代码:-
<a href="NewsDetail.aspx?ID=<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
我把它改成
<a href="News/<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
现在它运行良好,对我有好处。我找到了更好的方法来解决这个问题。在名为“listnews”的ListView中,itemtemplate中编写了以下代码:-
<a href="NewsDetail.aspx?ID=<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
我把它改成
<a href="News/<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
现在它运行良好,对我有好处。我找到了更好的方法来解决这个问题。在名为“listnews”的ListView中,itemtemplate中编写了以下代码:-
<a href="NewsDetail.aspx?ID=<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
我把它改成
<a href="News/<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
现在它运行良好,对我有好处。我找到了更好的方法来解决这个问题。在名为“listnews”的ListView中,itemtemplate中编写了以下代码:-
<a href="NewsDetail.aspx?ID=<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
我把它改成
<a href="News/<%#Eval("ID") %>"> <%#Eval("Title") %> </a>
现在它工作得很好,对我很好。哪一行导致了这个错误?当程序控件到达时:if(!string.IsNullOrEmpty(Page.RouteData.Values[“Id”].ToString()){}这里是shwing error哪一行导致了这个错误?当程序控件到达时:if(!string.IsNullOrEmpty)(Page.RouteData.Values[“Id”].ToString()){}这里是shwing error哪一行导致此错误?当程序控件到达:if(!string.IsNullOrEmpty(Page.RouteData.Values[“Id”].ToString()){}这里是shwing error哪一行导致此错误?当程序控件到达:if(!string.IsNullOrEmpty(Page.RouteData.Values[“Id”].ToString()){}它在这里颤抖error@SunnySandeep:如果解决方案与发布的不同,并且您认为它有用,请添加您自己的答案以供将来参考。这是错误的。我再次接受了答案。@SunnySandeep:如果解决方案与发布的不同,并且您认为它有用,请添加您自己的答案以供将来参考。这是错误的。我再次接受了答案。@SunnySandeep:如果解决方案与发布的不同,并且您认为它有用,请添加您自己的答案以供将来参考。这是错误的。我再次接受了答案。@SunnySandeep:如果解决方案与发布的不同,并且您认为它有用,请添加您自己的答案以供将来参考。这是错误的。我再次接受了答案。