日期:2014-05-17  浏览次数:20623 次

关于asp.net中文本链接的问题
我在一个页面中给多个文本定义了超链接,每个文本均是具体内容的标题,我希望可以通过点击标题进到相应的内容页中。源页面中的aspx.cs文件中的代码如下:
td.Text = "<a href = 'ThemeContent.aspx?id = "+i+"'>"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";(这里td是我创建的单元格,ds为dataset,i代表标题的编号,根据这个编号可以到数据库提取相应的内容)
点击不同的标题,进入到内容页(即目标页面),我希望可以提取到标题的链接中的参数“id”,根据id来确定内容页的具体内容。我在目标页面的aspx.cs中的代码是:
  int k = Convert.ToInt32(Request.QueryString["id"]);
但是这样出现了问题:
1.我点击标题后,页面没有出现内容,这是为什么呢?
2.不论我点击那个标题,内容页中k的值始终为0,这是为什么呢?百思不得其解啊!
3.目标页的地址中读了几个字符“%20%20”
我目标页中的详细代码如下:
protected void Page_Load(object sender, EventArgs e)
  {
  int k = Convert.ToInt32(Request.QueryString["id"]);
  conn = ConnectAccess.OC();
  conn.Open();
  cmd = new OleDbCommand("select title,ques_content from question", conn);
  OleDbDataAdapter da = new OleDbDataAdapter(cmd);
  DataSet ds = new DataSet();
  da.Fill(ds,"Theme"); //将提取出的数据库内容放在dataset中
  //创建表格
  Table tb = new Table();
  TableRow tr = new TableRow();
  tb.Controls.Add(tr);
  TableCell td = new TableCell();
  td.Text = ds.Tables["Theme"].Rows[k][0].ToString();
  tr = new TableRow();
  tb.Controls.Add(tr);
  td = new TableCell();
  td.Text = ds.Tables["Theme"].Rows[k][1].ToString();


  Page.Form.Controls.Add(tb);

  }

  }
}
请各位高手指点迷津,感激不尽!!!

------解决方案--------------------
程序运行后看下你页面的源码,看下这个<a>的href是否正确
------解决方案--------------------
td.Text = "<a href = 'ThemeContent.aspx?id = "+i+"'>"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";

调试下你的i是否有值啊
------解决方案--------------------
td.Text = "<a href = 'ThemeContent.aspx?id = "+i+"'>"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";

改成
td.Text = "<a href = ThemeContent.aspx?id ='"+i+"'>"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";

------解决方案--------------------
td.Text = "<a href = 'ThemeContent.aspx?id = "+i+"'>"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";

改成
td.Text = "<a href = \"ThemeContent.aspx?id = "+i+"\">"+ ds.Tables["list"].Rows[i][j].ToString() + "</a>";

试一下,我本地没测试,不过原先这样写过。

------解决方案--------------------
后台输出页面遇到HTML需要显示的""需要加\隔开下的。