Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建和输出数据作为链接?_C#_Asp.net - Fatal编程技术网

C# 如何创建和输出数据作为链接?

C# 如何创建和输出数据作为链接?,c#,asp.net,C#,Asp.net,我已经创建了一个web表单,可以使用文本编辑器将文章插入数据库。我的文章表有以下字段名;id、标题、内容、类型和上载日期。“内容”字段名由文本组成。本文还涉及来自另一个数据库表的数据,称为tag(即tag_id、name、type),该表未链接到article表 当我在webform上查看文章时,它们的输出如下所示: Pellentesque eget elit tag1. Vivamus ut lacinia lectus. Mauris eu efficitur mi. Nam bland

我已经创建了一个web表单,可以使用文本编辑器将文章插入数据库。我的文章表有以下字段名;id、标题、内容、类型和上载日期。“内容”字段名由文本组成。本文还涉及来自另一个数据库表的数据,称为tag(即tag_id、name、type),该表未链接到article表

当我在webform上查看文章时,它们的输出如下所示:

Pellentesque eget elit tag1. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Nam blandit est ut justo scelerisque, in sagittis nibh scelerisque. 
tag2 placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis.
我的问题是,我如何使我的文章内容看起来像下面所期望的输出:

Pellentesque eget elit ***tag1***. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Duis placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis.  
***tag2*** id consequat dui. Suspendisse non imperdiet odio.
在文章内容中显示标签名称(
tag1
&
tag2
)作为链接。链接将由某种查询字符串组成,单击后,它将呈现到一个网页,该网页保存该标签的id记录(通过DataTable)

我知道,这种方法需要我为标签的名称创建超链接,但我不太确定如何动态创建超链接(即将[tag1,tag2]的所有实例设置为超链接)。我需要在article的insert方法或aricle的getData()方法中创建此任务吗


任何帮助都将不胜感激。非常感谢

我有点不确定您是否希望这些文章可以通过文本框中的链接进行编辑。我假设不是,这是现有文章的查看页面

如果是这种情况,有很多方法可以做到这一点,我个人建议使用:


这不是一个完整的答案,但首先你需要一个富文本框而不是标准文本框。我正在使用tinymce文本编辑器将文章插入我的数据库,这就是你的建议。谢谢你的回复。谢谢你的回答。这是一个很好的起点。我想问最后一个问题,我将把这个逻辑放在我的insert()方法中的什么地方,或者创建一个新方法并将它链接到
insert()
&
getArticle()
方法。非常感谢。@user3070072我已经编辑了我的答案-我个人会把它放在OnPreRender部分。这样,在您以后可能添加的任何事件之后都会调用它。显然,您需要自己添加GetArticleText()、LoadAllTags()和CreateLinkHtml()方法。啊……这开始变得更有意义了。非常感谢您的时间和支持。
LoadAllTags()
方法的目的是从标记数据库中调用所有标记的名称吗?如果是的话,我有超过150000张唱片…可以吗?请进一步咨询。Thanks@user3070072你可能想过滤一下。。。但是,如果需要,请使其工作,然后稍后进行优化。最初的想法是使用该方法从数据库中加载所有标记。我的建议是,在创建文章时,将标签与某种链接表相关联,保存时间会更长,但一般来说,文章的浏览量大于编辑量。@user3070072无需担心!
protected override void OnPreRender(EventArgs e)
{     
    var ctrl = new HtmlGenericControl("div");
    string html = this.GetArticleText();

    // create the html formatted HTML/Links taking into account anti-xss attacks
    foreach(var tag in this.LoadAllTags())
    {
      html.Replace(tag.Key, this.CreateLinkHtml(tag);
    }

    ctrl.InnerHtml = html;

    this.SomePageContainer.Controls.Add(ctrl);

    base.OnPreRender(e);
}