-2

で null を許可する方法Context.Request:

context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
4

2 に答える 2

2

まず、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.");
}
于 2012-10-11T07:28:26.690 に答える
0

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()));
于 2012-10-11T06:33:25.557 に答える