链接到完整的文章,如果你点击“;..阅读更多“;as.net c#

本文关键字:net as 文章 如果 链接 | 更新日期: 2023-09-27 18:21:20

asp.net c#新手

目前,在我工作的网站的首页上,我有我数据库中按日期排序的前3篇新闻文章,在110个字符后,上面写着。。阅读更多。这是有效的。

这是我在头版重复最新3篇文章的新闻框。

 <div class="nyhed">
   <h3><%# Eval("nyhed_overskrift") %></h3>
   <p><%# CutText(DataBinder.Eval(Container.DataItem,"nyhed_tekst"), 110)%><a href="#">...Læs mere</a></p>
   <span> Oprettet | <%# Eval("nyhed_dato") %></span>
 </div>

我的代码在110个字符后停止文本。

 protected string CutText(object text, int length)
{
    if (DBNull.Value == text || text == null) return "";
    string txt = text.ToString();
    if (txt.Length <= length) return txt;
    return txt.Substring(0, length);
}

这是我所期望的我的全文网站

<div class="nyheder">
     <h1><%# Eval("nyhed_overskrift") %></h1>
     <p><%# Eval("nyhed_tekst") %></p>
     <p> <%# Eval("nyhed_dato") %></p>
        </div>
 <div class="nyheder_img">
     <img src='prod_image/<%# Eval("nyhed_billeder") %> '/>
        </div>

我的问题:当你点击"…阅读更多"时,我希望它链接到一个页面,在那里你可以阅读完整的新闻文章,而只有你在上点击"…了解更多"的文章,我不知道我应该如何链接到它。

链接到完整的文章,如果你点击“;..阅读更多“;as.net c#

基本上,您需要做的是在绑定其余数据时动态生成URL。通常在大多数网站中都有一个单独的页面,我们称之为article.aspx如何称呼它并不重要),用于可视化网站中的文档。

因此,当您将其余数据绑定到ReadMore部分时,您必须动态修改URL:

<p>
  <%# CutText(DataBinder.Eval(Container.DataItem,"nyhed_tekst"), 110)%>
  <a href='/article.aspx?id=<%# Eval("ArticleId")%>'>...Læs mere</a> 
</p>

ArticleId将是数据库中你文章的标识符,我这样称呼它是因为我不知道你是如何命名的。完成后,您可以继续创建article.aspx页面,该页面将可视化文档。

查看article.aspx,您可以在Page_Load方法上方添加一个属性,该属性将保存我们传递给我们的ArticleId:

public int ArticleId
{
     get
     {
         //Attempt to extract ArticleId from QueryString, return 0 if we can't;
         int articleId = 0;
         if(int.TryParse(Request.QueryString["id"].ToString(), out articleId))
         {
            return articleId;
         }
         return articleId;
     }
 }

然后在Page_Load上,您必须实现显示文章的逻辑,在这种情况下,检查ArticleId是否正确:

protected void Page_Load(object sender, EventArgs e)
{
   //If you need to check for postbacks do it here, removed for simplicity;
   if(ArticleId != 0)
   {
      //Your own logic here, pull from database and bind the data to your controls;
      LoadDocument();        
   }
}

结果是每个ReadMore部分都指向不同的文章.aspx?id=X其中X将是相关文档的标识符。

Hi您需要使用会话/queryString将文章的Id(主键)发送到下一页。下面是一个使用查询字符串的示例:

<p><%# CutText(DataBinder.Eval(Container.DataItem,"nyhed_tekst"), 110)%><a href="NameOfYourSecondPage.aspx?id=<%#Eval("YourArticleId") %>">...Læs mere</a></p>

一旦你做到了这一点,你需要从第二页的查询字符串中收到id:

 if (!Page.IsPostBack)
    {
        if (!string.IsNullOrEmpty(Request.QueryString["id"]))
        {
            int id = Convert.ToInt32(Request.QueryString.Get("id"));
            //---- Now here you can get your complete article by using id and display on page.
        }
    }

首先必须有一个名为Artical.aspx的网络表单,然后是

<ifram><div style="border:1px solid blue; min-height:152px;">
<%# CutText(DataBinder.Eval(Container.DataItem, "artDescrption"), 300)%>
<asp:HyperLink ID="HyperLink3" NavigateUrl='<%#string.Format("~/Article.aspx?artid={0}",Eval("artid"))%>' runat="server">...ReadMore</asp:HyperLink></div></ifram>

要添加到主要内容的链接,只需在精简文本的正下方添加这行代码。

<a href='<%# (DataBinder.Eval(Container.DataItem, "Id",  "details.aspx?id={0}"))%>'>See Details</a>

这段代码只是将这个博客的ID作为查询字符串传递到一个名为details.aspx的页面。使用查询参数并在数据库中查询与该ID相关的帖子。