C# 在我的foreach数据行中包含html的格式

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>";

我正在使用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>";
    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();