0

我有以下代码在经历一些条件后更新 SQL 数据源的查询参数的值。

SqlDataSource sdm = new SqlDataSource("<our connection string>", "SELECT  [Message Id] ,[To] ,[From] ,[Reply To] ,[Subject] ,[Message] ,[Date added] FROM [database].[dbo].[User Messages] where ([to]=@sid or [from]=@sid) and ([to]=@qid or [from]=@qid)  and [reply to]=@rid");

string user = Session["USERID"].ToString();
string to = Request["to"].ToString();
string from = Request["from"].ToString();
sdm.UpdateParameters["rid"].DefaultValue = Request["replyid"].ToString();
sdm.UpdateParameters["sid"].DefaultValue = user;
if (user == to)
  sdm.UpdateParameters["qid"].DefaultValue=from;
else
  sdm.UpdateParameters["qid"].DefaultValue= to;

sdm.Update();
sdm.DataBind();
Repeater1.DataSource = sdm;
Repeater1.DataBind();

它显示 NullReferenceException 在sdm.UpdateParameters["rid"].DefaultValue = Request["replyid"].ToString();

rid已在查询字符串中设置为?rid=a

4

2 回答 2

1

您需要使用该Request.QueryString集合来获取您的rid参数:

sdm.UpdateParameters["rid"].DefaultValue = Request.QueryString["rid"];

使用带有的索引器将使您从、或集合Request中获取值,直接使用会使您的意图更加清晰。QueryStringFormCookiesServerVariablesRequest.QueryString

于 2013-01-21T12:40:50.917 回答
0

查询字符串不应该?replyid=a代替?rid=a?.

似乎Request["replyid"]返回null,然后ToString()抛出异常。

于 2013-01-21T12:39:05.470 回答