如何允许 null in Context.Request
:
context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
如何允许 null in 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"]);
不用担心这三个中的任何一个是否为空。
然后,如果任何输入为空,您可以更改retrieveList
以正确响应。例如,您可以返回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
不管你是否给它 a 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.");
}
你没有指定任何东西!请添加信息,您甚至没有指定发生此问题的环境、类或一般上下文。我们也不知道retrieveList() 的签名是什么!这让我们很难为您提供帮助!你有多想回答这个问题,我的一位同事曾经面临过:“这个废话行不通!” ? (是的,这甚至不是一个问题,而是发生在现实生活中的支持情况下!)
我注意到的一件事是您使用 * 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()));