如何在Context.Request
中允许null:
context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));
答案 0 :(得分:2)
首先,Request["..."]
已经返回string
,因此无需在其上调用ToString()
,因此在此阶段,如果它返回{{1}则无需担心(即如果请求中没有密钥)。
因此你可以打电话给例如。
null
不用担心三者中的任何一个是否为空。
如果任何输入为空,则可以更改retrieveList(
context.Request["SalCode"],
context.Request["groupKeyword"],
context.Request["text"]);
以正确响应。例如,您可以返回 null:
retrieveList
然后,请注意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
答案 1 :(得分:0)
TYou没有指明任何东西!请添加信息,您甚至没有指定发生此问题的环境,类或一般上下文。我们也不知道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是问题,这将解决它。但是,如果底层代码在指定空String时无法正常工作,那么应该在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()));