Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net中使用Url重写_C#_Asp.net_Global Asax - Fatal编程技术网

C# 如何在asp.net中使用Url重写

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

我正在使用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="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:如果解决方案与发布的不同,并且您认为它有用,请添加您自己的答案以供将来参考。这是错误的。我再次接受了答案。