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 に答える