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;在,我不知道我应该如何链接到它。
答案 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关联的帖子。