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

时间:2014-09-09 07:24:58

标签: c# asp.net hyperlink

asp.net c#

的新功能

目前正在我网站的首页上工作,我按照日期排序了我的数据库中排名前三的新闻文章,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>

我的问题: 当你点击&#34; ...阅读更多&#34;我希望它链接到一个页面,在那里你可以阅读完整的新闻文章,只有你点击的文章&#34; ...阅读更多&#34;在,我不知道我应该如何链接到它。

4 个答案:

答案 0 :(得分:1)

基本上,您需要做的是在绑定其余数据时动态生成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部分指向不同的article.aspx?id = X ,其中 X 将是相关文档的标识符。

答案 1 :(得分:0)

您好需要使用Session / 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.
        }
    }

答案 2 :(得分:0)

首先,您必须拥有名为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>

答案 3 :(得分:0)

要添加指向主要内容的链接,只需在精简文本的正下方添加此代码行即可。

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

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