C# 在我的foreach数据行中包含html的格式
我正在使用DataSet显示数据库中的选定字段C# 在我的foreach数据行中包含html的格式,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在使用DataSet显示数据库中的选定字段 foreach (DataRow row in dsNews.Tables["News"].Rows) { newsTitle.Text += "<dd>"; newsTitle.Text += "<p><a href=""news-edit?id=" + row["newsID"] + """>" + row["newsTitle"] + "</a></p>";
foreach (DataRow row in dsNews.Tables["News"].Rows)
{
newsTitle.Text += "<dd>";
newsTitle.Text += "<p><a href=""news-edit?id=" + row["newsID"] + """>" + row["newsTitle"] + "</a></p>";
newsTitle.Text += "</dd>";
}
最终它将被用来编辑一篇新闻文章
下面这句话给我带来了麻烦:
newsTitle.Text += "<p><a href=""news-edit?id=" + row["newsID"] + """>" + row["newsTitle"] + "</a></p>";
上面的格式不正确吗?很清楚我想做什么-但是编译器要求一个
我不知道为什么 你在用什么语言?对于C和Javascript,您不能逃避您的引用 所以这一行:
newsTitle.Text += "<p><a href=""news-edit?id=" + row["newsID"] + """>" + row["newsTitle"] + "</a></p>"
阅读
最终得到的是一个赋值和两个字符串,除了语法错误之外,它们什么都不做
在javascript中,您可以使用半引号解决此问题:
newsTitle.Text += '<p><a href=""news-edit?id=' + row["newsID"] + '"">' + row["newsTitle"] + '</a></p>'
。。。这表明了另一个担忧;正在打开和关闭您的href,但其中没有内容
在C语言中,您可以使用:
newsTitle.Text += "<p><a href=\"\"news-edit?id=" + row["newsID"] + "\"\">" + row["newsTitle"] + "</a></p>"
。。。它看起来仍然不能提供你真正想要的东西。你没有正确处理你的报价。如果需要双引号属性,则需要用反斜杠转义嵌入的双引号
newsTitle.Text += "<p><a href=\"news-edit?id=" + row["newsID"] + "\">" + row["newsTitle"] + "</a></p>";
然后在代码中,检索文章集合并将它们绑定到一个转发器
网络表单
<asp:Repeater runat="server" id="ArticleRepeater" ItemType="MyNamespace.Article">
<ItemTemplate>
<p>
<a href="news-edit?id=<%#: Item.Id %>"><%#: Item.Title %></a>
</p>
</ItemTemplate>
</asp:Repeater>
代码隐藏
IEnumerable<Article> articles = DataLayer.GetArticles();
ArticleRepeater.DataSource = articles;
ArticleRepeater.DataBind();
显然,您需要实现某种类型的数据层,可能需要使用ORM(如Entity Framework)或Micro ORM(如.Many thanks@mason)。我不明白你怎么不必制作一个类来读取你的数据?绑定的中继器将完成相同的工作,然后您可以使用Eval等。。。但是,就是你用get呈现的东西;设置只是一个更好的方法?感谢…@davv一个表示您的数据的强类型类,在C中使用模型比使用DataTable容易得多。绑定到中继器的DataTable将依赖于魔术字符串来获取列,您无法获得Intellisense,并且它无法在编译时告诉您在Eval调用中列名是否不同步。它只会在运行时失败。模型使用的内存也比数据表少得多。
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}
<asp:Repeater runat="server" id="ArticleRepeater" ItemType="MyNamespace.Article">
<ItemTemplate>
<p>
<a href="news-edit?id=<%#: Item.Id %>"><%#: Item.Title %></a>
</p>
</ItemTemplate>
</asp:Repeater>
IEnumerable<Article> articles = DataLayer.GetArticles();
ArticleRepeater.DataSource = articles;
ArticleRepeater.DataBind();