で null を許可する方法Context.Request
:
context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
で null を許可する方法Context.Request
:
context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
まず、Request["..."]
すでに a が返されているstring
ため、それを呼び出す必要はなくToString()
、この段階で、返されたnull
場合 (つまり、キーがリクエストに存在しない場合) を心配する必要はありません。
したがって、たとえば呼び出すことができます
retrieveList(
context.Request["SalCode"],
context.Request["groupKeyword"],
context.Request["text"]);
3 つのいずれかが null であるかどうかを心配する必要はありません。
retrieveList
その後、入力のいずれかが null の場合に正しく応答するように変更できます。たとえば、nullを返すことができます。
private string /*or whatever*/ retrieveList(
string salCode, string groupKeyword, string text)
{
if (String.IsNullOrEmpty(salCode) ||
String.IsNullOrEmpty(groupKeyword) ||
String.IsNullOrEmpty(text))
{
return null;
}
...
}
次に、 を指定Response.Write
しても気にしないことに注意してくださいnull
。何も書き込まないため、上記のように呼び出しを続けることができますWrite
。
または、たとえば戻り値を確認して、次の場合はメッセージを書き込むこともできますnull
。
var list = retrieveList(
context.Request["SalCode"],
context.Request["groupKeyword"],
context.Request["text"]));
if (!String.IsNullOrEmpty(list))
{
context.Response.Write(list);
}
else
{
context.Response.Write("Missing request parameter.");
}
Tあなたは何も指定していません! 情報を追加してください。この問題が発生する環境、クラス、または一般的なコンテキストを指定していません。また、retrieveList() の署名が何であるかもわかりません! これにより、私たちはあなたを助けることが非常に困難になります! 私の同僚の 1 人がかつて直面した質問に、どの程度答えてほしいですか。? (はい、それは質問ではありませんが、実際のサポート状況で起こりました!)
私が注意したことの 1 つは、* t *oString () の代わりに* T *oString() を使用していることです。これはタイプミスだと思います。(これがC#であることは明らかなので編集)また、.toString(null)が何を意味するのかわかりません。そのステートメントが NullPointerException を引き起こすことを私たちに伝えたいですか? その場合、あなたの質問を理解するために、例えばこれを書き留めて...
ところで、その場合は、これで問題が解決します。
Object salCode = context.Request["SalCode"];
context.Response.Write(retrieveList(salCode==null?"":salCode.ToString(), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
編集私は(しかし、テストする手段がありません)nullが問題である場合、これで修正されると思います。ただし、基になるコードが指定された空の文字列で適切に機能しない場合は、次のように retrieveList() でチェックする必要があります (参照された投稿から貼り付け):
private string retrieveList(string SalCode, string groupKeyword, string text)
{
SqlConnection _sqlCon = default(SqlConnection);
SqlCommand _sqlCom = default(SqlCommand);
SqlDataReader _sqlReader = default(SqlDataReader);
StringBuilder _sb = new StringBuilder();
List<TokenInputJSON> _out = null;
try
{
_sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SalesianBlastConnectionString"].ConnectionString);
_sqlCom = new SqlCommand("getTokenInput", _sqlCon);
_sqlCom.CommandType = CommandType.StoredProcedure;
_sqlCon.Open();
//This is the edited part
if(SalCode==null || SalCode.Equals("")) {
_sqlCom.Parameters.Add(new SqlParameter("@salCode", SqlDbType.VarChar, 4)).Value = SalCode;
}
//... continue with the other parts
簡単なチェック: アイデアがありました: retrieveList を呼び出すときに定数値を使用して、これが問題であるかどうかを確認します。
context.Response.Write(retrieveList("enterAValidSalCodeHere", context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));