我正在创建一个ASP。NET web表单应用程序搜索PDF中的文本,如果PDF中有该文本,它将在文本框中返回文件名和路径。到目前为止,一切正常,但现在我准备把完整的路径,并把它放在一个链接。
例如,结果将是:
https:\www.mysite.comexample1.PDF
我想在文本框中显示一个可点击的超链接,并简单地标记为:
Example 1
我想知道我用ASP是否犯了一个错误。NET Web Forms无法做到这一点,因为它只有一个文本框窗体控件,而不是一个富文本框。问题是我的结果被存储在一个字符串生成器,所以它不像我只需要一个静态标签是一个URL。
我有:
foreach (var f in files)
{
string pdfSearchMatch = ReadPdfFile(f.File, txtBoxSearchString.Text);
if (pdfSearchMatch != null)
{
string fileNameOnly = Regex.Replace(pdfSearchMatch, @"\\my.test.site@SSL\Home\Sections\PDFs\Courses\.+?\.+?\.+?\", "");
myCommand.CommandText = "select cc.pk1 as 'pid', f.file_name as 'xid', f.link_name as 'linkname' from course_contents cc join course_main cm on cc.crsmain_pk1 = cm.pk1 join course_contents_files ccf on cc.pk1 = ccf.course_contents_pk1 join files f on ccf.files_pk1 = f.pk1 where cm.course_id = 'COM-Syllabi' and f.link_name = '"+fileNameOnly+"'";
using (SqlDataReader sqlReader = myCommand.ExecuteReader())
{
while (sqlReader.Read())
{
string rid = Regex.Replace(sqlReader["xid"].ToString(), "/xid", "rid");
string pdfHyperlink = @"https://my.test.site/Home/pid-"+sqlReader["pid"].ToString()+"-dt-content-"+rid+sqlReader["xid"].ToString();
sb.AppendLine(pdfHyperlink);
}
}
}
}
myConnection.Close();
txtBoxResults.Text = sb.ToString();
我希望分配给txtBoxResults.Text
的结果是可点击的链接。
谢谢。
这是对您的代码的最小和最快的修复,但它是不合适的无论文本框在哪里,只要创建一个
<asp:Literal ID="Literal1" runat="server" ></asp:Literal>
和完全相同的行
txtBoxResults.Text = sb.ToString();
替换为
Literal1.Text = sb.ToString();
看它是怎么显示的,还没有测试过。仍然建议解决SQL注入和服务器连接上的额外负载,使其保持打开。
更新:- 添加超链接部分,尝试将其替换为同一行,可能会遇到转义
的问题string pdfHyperlink = @"<a href='https://my.test.site/Home/pid-" + sqlReader["pid"].ToString() + "-dt-content-" + rid + sqlReader["xid"].ToString()+"'>Test</a>";