我正在创建一个ASP.NET网页表单应用程序,用于搜索PDF文本,如果PDF具有该文本,则会返回文件名和文本框中的路径。到目前为止一切正常但现在我已经准备好采取完整的路径并把它放在链接中。
例如,结果将是:
https:\\www.mysite.com\example1.PDF
我想在文本框中显示一个可点击的超链接,并简单地标记为:
Example 1
我想知道我是否在使用ASP.NET Web Forms时犯了一个错误,因为它只有一个Text Box表单控件而不是一个富文本框。问题是我的结果存储在字符串构建器中,因此我不需要将一个静态标签作为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
的结果是可点击的链接。
感谢。
答案 0 :(得分:1)
这是代码的最小和最快的修复,但它不合适 无论你有什么文本框,只需创建一个
<asp:Literal ID="Literal1" runat="server" ></asp:Literal>
和完全相同的行
txtBoxResults.Text = sb.ToString();
替换为
Literal1.Text = sb.ToString();
看看它是如何显示的,还没有经过测试。仍然建议解决SQL注入和服务器连接上的额外负载,使其保持打开状态。
UPDATE: - 的 添加超链接部分尝试替换与此相同的行,ay面临问题与转义
string pdfHyperlink = @"<a href='https://my.test.site/Home/pid-" + sqlReader["pid"].ToString() + "-dt-content-" + rid + sqlReader["xid"].ToString()+"'>Test</a>";