gpt4 book ai didi

asp.net - 在 asp.net 中为数据制作重复模板的好方法

转载 作者:行者123 更新时间:2023-12-04 07:10:34 25 4
gpt4 key购买 nike

我正在构建一个网页,在该网页的首页上显示 n 个最新的新闻帖子,这是获取帖子并将它们返回到 .aspx 文件的方法。我使用 asp:substitution-control 将字符串插入网页。

我认为我这样做的方式有点凌乱和丑陋,如果我想对模板做些小改动,也不是很灵活。在将模板本身放在单独的 .aspx 或 .ascx 文件中时,我有什么方法可以实现我想要的吗?我已经尝试过,但无法想出一种将数据传递到模板文件的智能方法。

另外,当(如果?)我将模板放在一个单独的文件中时 - 我如何在另一个 .aspx 文件中重复它(在 contentplaceholder 中,如果这很重要。布局由母版页控制)不同每个实例的值?

public static string getShortPosts(int postNumber)
{
DbConnection d = new DbConnection();
DataTable tbl = d.selectQuery("SELECT TOP (" + postNumber + ") news.id, news.title, news.newsContent, news.excerpt, news.date, news.userid, news.urlTitle, " +
"news.isPublished, users.firstName, users.lastName FROM news INNER JOIN users ON news.userid = users.userid " +
"ORDER BY id DESC;");
DataTableReader r = tbl.CreateDataReader();

StringBuilder s = new StringBuilder("");

while (r.Read())
{
/* THIS */
s.Append(
"<div class=\"newsBox\">" + System.Environment.NewLine +
"<h2>" + r["title"]+ "</h2>" + System.Environment.NewLine +
"<p>" + r["excerpt"] + "</p>" + System.Environment.NewLine +
"</div>" +System.Environment.NewLine+System.Environment.NewLine
);
}

return s.ToString();
}

最佳答案

如果是我,我会创建一个用户控件,专门用于在列表中创建单个条目。用户控件只需要一个参数(它负责的帖子编号)。页面本身只需要维护这些用户控件的数组(或列表或任何您喜欢的结构)并将它们添加到需要动态显示的任何面板中。
用户控件将包含一个带有“newsBox”类的面板、一个标题标签和另一个面板(或者可能只是一个常规的 HTML 段落)的内容,因此它的输出将与您正在构建的内容相同例子。不同之处在于它将使用 ASP 和 HTML 对象而不是字符串来创建。
另外,如果是我,我不会有一个用户控件负责从数据库中查询自己的数据。 DAL 在这里确实很有用,因为您可以拥有一个函数“GetNewsDetails(int postNumber)”,如果最近查询过新闻帖子,它可以缓存新闻帖子,并且可以在必要时被其他用户控件重用。

关于asp.net - 在 asp.net 中为数据制作重复模板的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/446660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com